Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r48605 - in branches/proto/v4: . boost boost/algorithm/string/detail boost/archive boost/archive/detail boost/archive/impl boost/archive/iterators boost/asio boost/asio/detail boost/asio/impl boost/asio/posix boost/asio/ssl boost/asio/ssl/detail boost/asio/windows boost/circular_buffer boost/config boost/config/compiler boost/detail boost/dynamic_bitset boost/exception boost/exception/detail boost/filesystem boost/functional/detail boost/fusion/include boost/fusion/sequence/intrinsic boost/fusion/tuple boost/fusion/tuple/detail boost/math/concepts boost/math/special_functions boost/math/tools boost/mpi/collectives boost/mpi/detail boost/multi_index/detail boost/numeric/ublas boost/pending boost/proto boost/proto/transform boost/regex boost/regex/v4 boost/serialization boost/serialization/detail boost/spirit/home/karma boost/spirit/home/karma/action boost/spirit/home/karma/auxiliary boost/spirit/home/karma/binary boost/spirit/home/karma/char boost/spirit/home/karma/directive/detail boost/spirit/home/karma/numeric boost/spirit/home/karma/operator boost/spirit/home/karma/stream boost/spirit/home/karma/string boost/spirit/home/lex/qi boost/spirit/home/lex/qi/state boost/spirit/home/qi boost/spirit/home/qi/auxiliary boost/spirit/home/support boost/spirit/home/support/auxiliary boost/system boost/thread boost/thread/win32 boost/tr1 boost/tr1/detail boost/tr1/tr1 boost/utility libs libs/algorithm/string/test libs/asio/doc libs/asio/example/nonblocking libs/asio/example/windows libs/asio/test libs/asio/test/ip libs/asio/test/posix libs/asio/test/ssl libs/asio/test/windows libs/circular_buffer/doc libs/config/doc libs/config/doc/html libs/config/doc/html/boost_config libs/config/test libs/config/test/all libs/exception/doc libs/exception/doc/source libs/exception/example libs/exception/test libs/filesystem/doc libs/filesystem/example libs/filesystem/test libs/filesystem/test/msvc libs/filesystem/test/msvc/convenience_test libs/filesystem/test/msvc/deprecated_test libs/filesystem/test/msvc/fstream_test libs/filesystem/test/msvc/large_file_support_test libs/filesystem/test/msvc/mbcopy libs/filesystem/test/msvc/operations_test libs/filesystem/test/msvc/path_test libs/filesystem/test/msvc/simple_ls libs/filesystem/test/msvc/wide_test libs/fusion/test libs/fusion/test/sequence libs/graph/test libs/math/doc/html libs/math/doc/sf_and_dist libs/math/doc/sf_and_dist/equations libs/math/doc/sf_and_dist/html libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders libs/math/doc/sf_and_dist/html/math_toolkit/dist libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/normal_example libs/math/doc/sf_and_dist/html/math_toolkit/main_overview libs/math/doc/sf_and_dist/html/math_toolkit/perf libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial libs/math/doc/sf_and_dist/html/math_toolkit/special libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint libs/math/doc/sf_and_dist/html/math_toolkit/special/expint libs/math/doc/sf_and_dist/html/math_toolkit/special/extern_c libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials libs/math/doc/sf_and_dist/html/math_toolkit/special/inv_hyper libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float libs/math/doc/sf_and_dist/html/math_toolkit/special/powers libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_erf libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly libs/math/doc/sf_and_dist/html/math_toolkit/special/zetas libs/math/doc/sf_and_dist/html/math_toolkit/status libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1 libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2 libs/math/doc/sf_and_dist/html/math_toolkit/using_udt libs/math/test libs/math/tools libs/multi_index/doc libs/proto/doc libs/proto/test libs/random libs/regex/build libs/regex/src libs/regex/test/pathology libs/regex/test/regress libs/serialization/example libs/serialization/src libs/serialization/test libs/serialization/vc7ide libs/spirit/classic/test libs/spirit/test libs/spirit/test/karma libs/spirit/test/qi libs/system/src libs/test/doc/src libs/thread/doc libs/thread/src/win32 libs/thread/test libs/tr1/test libs/tr1/test/cyclic_depend libs/utility tools tools/bcp tools/boostbook tools/build/v2 tools/build/v2/build tools/build/v2/contrib tools/build/v2/doc tools/build/v2/doc/src tools/build/v2/example/customization tools/build/v2/example/generate tools/build/v2/example/generator tools/build/v2/example/gettext tools/build/v2/example/hello tools/build/v2/example/libraries tools/build/v2/example/libraries/app tools/build/v2/example/libraries/util/foo tools/build/v2/example/make tools/build/v2/example/pch tools/build/v2/example/python_modules tools/build/v2/example/qt tools/build/v2/example/qt/qt3/hello tools/build/v2/example/qt/qt3/moccable-cpp tools/build/v2/example/qt/qt3/uic tools/build/v2/example/qt/qt4/hello tools/build/v2/example/qt/qt4/moccable-cpp tools/build/v2/example/qt/qt4/uic tools/build/v2/example/variant tools/build/v2/example/variant/libs tools/build/v2/example/versioned tools/build/v2/kernel tools/build/v2/test tools/build/v2/test/boostbook tools/build/v2/test/dependency-test tools/build/v2/test/direct-request-test tools/build/v2/test/generators-test tools/build/v2/test/generators-test/lib tools/build/v2/test/prebuilt tools/build/v2/test/prebuilt/ext tools/build/v2/test/project-test1 tools/build/v2/test/project-test1/dir tools/build/v2/test/project-test1/dir2 tools/build/v2/test/project-test3 tools/build/v2/test/project-test3/lib tools/build/v2/test/project-test3/lib2 tools/build/v2/test/project-test3/lib2/helper tools/build/v2/test/project-test3/lib3 tools/build/v2/test/project-test4 tools/build/v2/test/project-test4/lib tools/build/v2/test/project-test4/lib2 tools/build/v2/test/qt4 tools/build/v2/test/railsys/libx tools/build/v2/test/railsys/libx/src tools/build/v2/test/railsys/program tools/build/v2/test/railsys/program/liba tools/build/v2/test/railsys/program/main tools/build/v2/test/test2 tools/build/v2/test/unused tools/build/v2/test/v1-testing tools/build/v2/test/v1_testing tools/build/v2/tools tools/build/v2/util tools/inspect tools/jam/doc tools/jam/src tools/jam/test tools/regression/xsl_reports
From: eric_at_[hidden]
Date: 2008-09-05 00:14:49


Author: eric_niebler
Date: 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
New Revision: 48605
URL: http://svn.boost.org/trac/boost/changeset/48605

Log:
merged from trunk
Added:
   branches/proto/v4/boost/asio/detail/eventfd_select_interrupter.hpp
      - copied unchanged from r48604, /trunk/boost/asio/detail/eventfd_select_interrupter.hpp
   branches/proto/v4/boost/asio/detail/win_iocp_overlapped_ptr.hpp
      - copied unchanged from r48604, /trunk/boost/asio/detail/win_iocp_overlapped_ptr.hpp
   branches/proto/v4/boost/asio/windows/overlapped_ptr.hpp
      - copied unchanged from r48604, /trunk/boost/asio/windows/overlapped_ptr.hpp
   branches/proto/v4/boost/exception/detail/error_info_impl.hpp
      - copied unchanged from r48604, /trunk/boost/exception/detail/error_info_impl.hpp
   branches/proto/v4/boost/exception/detail/type_info.hpp
      - copied unchanged from r48604, /trunk/boost/exception/detail/type_info.hpp
   branches/proto/v4/boost/exception/enable_current_exception.hpp
      - copied unchanged from r48604, /trunk/boost/exception/enable_current_exception.hpp
   branches/proto/v4/boost/exception/enable_error_info.hpp
      - copied unchanged from r48604, /trunk/boost/exception/enable_error_info.hpp
   branches/proto/v4/boost/exception/get_error_info.hpp
      - copied unchanged from r48604, /trunk/boost/exception/get_error_info.hpp
   branches/proto/v4/boost/fusion/include/at_c.hpp
      - copied unchanged from r48604, /trunk/boost/fusion/include/at_c.hpp
   branches/proto/v4/boost/fusion/sequence/intrinsic/at_c.hpp
      - copied unchanged from r48604, /trunk/boost/fusion/sequence/intrinsic/at_c.hpp
   branches/proto/v4/boost/fusion/tuple/detail/tuple_expand.hpp
      - copied unchanged from r48604, /trunk/boost/fusion/tuple/detail/tuple_expand.hpp
   branches/proto/v4/boost/serialization/pfto.hpp
      - copied unchanged from r48604, /trunk/boost/serialization/pfto.hpp
   branches/proto/v4/boost/serialization/smart_cast.hpp
      - copied unchanged from r48604, /trunk/boost/serialization/smart_cast.hpp
   branches/proto/v4/boost/serialization/state_saver.hpp
      - copied unchanged from r48604, /trunk/boost/serialization/state_saver.hpp
   branches/proto/v4/boost/serialization/static_warning.hpp
      - copied unchanged from r48604, /trunk/boost/serialization/static_warning.hpp
   branches/proto/v4/boost/serialization/strong_typedef.hpp
      - copied unchanged from r48604, /trunk/boost/serialization/strong_typedef.hpp
   branches/proto/v4/boost/serialization/throw_exception.hpp
      - copied unchanged from r48604, /trunk/boost/serialization/throw_exception.hpp
   branches/proto/v4/boost/spirit/home/karma/auxiliary/confix.hpp
      - copied unchanged from r48604, /trunk/boost/spirit/home/karma/auxiliary/confix.hpp
   branches/proto/v4/boost/spirit/home/qi/auxiliary/confix.hpp
      - copied unchanged from r48604, /trunk/boost/spirit/home/qi/auxiliary/confix.hpp
   branches/proto/v4/boost/spirit/home/support/auxiliary/confix.hpp
      - copied unchanged from r48604, /trunk/boost/spirit/home/support/auxiliary/confix.hpp
   branches/proto/v4/libs/asio/example/windows/
      - copied from r48604, /trunk/libs/asio/example/windows/
   branches/proto/v4/libs/asio/example/windows/Jamfile
      - copied unchanged from r48604, /trunk/libs/asio/example/windows/Jamfile
   branches/proto/v4/libs/asio/example/windows/Jamfile.v2
      - copied unchanged from r48604, /trunk/libs/asio/example/windows/Jamfile.v2
   branches/proto/v4/libs/asio/example/windows/transmit_file.cpp
      - copied unchanged from r48604, /trunk/libs/asio/example/windows/transmit_file.cpp
   branches/proto/v4/libs/asio/test/read_at.cpp
      - copied unchanged from r48604, /trunk/libs/asio/test/read_at.cpp
   branches/proto/v4/libs/asio/test/windows/overlapped_ptr.cpp
      - copied unchanged from r48604, /trunk/libs/asio/test/windows/overlapped_ptr.cpp
   branches/proto/v4/libs/asio/test/write_at.cpp
      - copied unchanged from r48604, /trunk/libs/asio/test/write_at.cpp
   branches/proto/v4/libs/config/test/boost_no_rtti.ipp
      - copied unchanged from r48604, /trunk/libs/config/test/boost_no_rtti.ipp
   branches/proto/v4/libs/config/test/no_rtti_fail.cpp
      - copied unchanged from r48604, /trunk/libs/config/test/no_rtti_fail.cpp
   branches/proto/v4/libs/config/test/no_rtti_pass.cpp
      - copied unchanged from r48604, /trunk/libs/config/test/no_rtti_pass.cpp
   branches/proto/v4/libs/exception/doc/BOOST_THROW_EXCEPTION.html
      - copied unchanged from r48604, /trunk/libs/exception/doc/BOOST_THROW_EXCEPTION.html
   branches/proto/v4/libs/exception/doc/Configuration.html
      - copied unchanged from r48604, /trunk/libs/exception/doc/Configuration.html
   branches/proto/v4/libs/exception/doc/boost_exception_get_error_info_hpp.html
      - copied unchanged from r48604, /trunk/libs/exception/doc/boost_exception_get_error_info_hpp.html
   branches/proto/v4/libs/exception/test/get_error_info_hpp_test.cpp
      - copied unchanged from r48604, /trunk/libs/exception/test/get_error_info_hpp_test.cpp
   branches/proto/v4/libs/exception/test/refcount_ptr_test.cpp
      - copied unchanged from r48604, /trunk/libs/exception/test/refcount_ptr_test.cpp
   branches/proto/v4/libs/filesystem/test/deprecated_test.cpp
      - copied unchanged from r48604, /trunk/libs/filesystem/test/deprecated_test.cpp
   branches/proto/v4/libs/filesystem/test/msvc/deprecated_test/
      - copied from r48604, /trunk/libs/filesystem/test/msvc/deprecated_test/
   branches/proto/v4/libs/filesystem/test/msvc/deprecated_test/deprecated_test.vcproj
      - copied unchanged from r48604, /trunk/libs/filesystem/test/msvc/deprecated_test/deprecated_test.vcproj
   branches/proto/v4/libs/fusion/test/sequence/tr1_tuple_auto_conv.cpp
      - copied unchanged from r48604, /trunk/libs/fusion/test/sequence/tr1_tuple_auto_conv.cpp
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/acosh1.mml
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/acosh1.mml
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/acosh1.png
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/acosh1.png
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/acosh1.svg
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/acosh1.svg
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/acosh2.mml
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/acosh2.mml
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/acosh2.png
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/acosh2.png
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/acosh2.svg
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/acosh2.svg
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/acosh3.mml
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/acosh3.mml
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/acosh3.png
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/acosh3.png
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/acosh3.svg
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/acosh3.svg
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/acosh4.mml
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/acosh4.mml
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/acosh4.png
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/acosh4.png
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/acosh4.svg
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/acosh4.svg
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/asinh1.mml
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/asinh1.mml
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/asinh1.png
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/asinh1.png
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/asinh1.svg
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/asinh1.svg
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/asinh2.mml
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/asinh2.mml
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/asinh2.png
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/asinh2.png
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/asinh2.svg
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/asinh2.svg
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/asinh3.mml
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/asinh3.mml
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/asinh3.png
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/asinh3.png
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/asinh3.svg
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/asinh3.svg
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/asinh4.mml
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/asinh4.mml
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/asinh4.png
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/asinh4.png
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/asinh4.svg
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/asinh4.svg
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/atanh1.mml
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/atanh1.mml
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/atanh1.png
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/atanh1.png
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/atanh1.svg
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/atanh1.svg
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/atanh2.mml
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/atanh2.mml
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/atanh2.png
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/atanh2.png
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/atanh2.svg
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/atanh2.svg
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/atanh3.mml
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/atanh3.mml
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/atanh3.png
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/atanh3.png
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/atanh3.svg
      - copied unchanged from r48604, /trunk/libs/math/doc/sf_and_dist/equations/atanh3.svg
   branches/proto/v4/libs/math/test/acosh_data.ipp
      - copied unchanged from r48604, /trunk/libs/math/test/acosh_data.ipp
   branches/proto/v4/libs/math/test/asinh_data.ipp
      - copied unchanged from r48604, /trunk/libs/math/test/asinh_data.ipp
   branches/proto/v4/libs/math/test/atanh_data.ipp
      - copied unchanged from r48604, /trunk/libs/math/test/atanh_data.ipp
   branches/proto/v4/libs/math/test/test_inv_hyp.cpp
      - copied unchanged from r48604, /trunk/libs/math/test/test_inv_hyp.cpp
   branches/proto/v4/libs/math/tools/inv_hyp_data.cpp
      - copied unchanged from r48604, /trunk/libs/math/tools/inv_hyp_data.cpp
   branches/proto/v4/libs/proto/doc/transforms.qbk
      - copied unchanged from r48604, /trunk/libs/proto/doc/transforms.qbk
   branches/proto/v4/libs/proto/doc/transforms_old.qbk
      - copied unchanged from r48604, /trunk/libs/proto/doc/transforms_old.qbk
   branches/proto/v4/libs/serialization/vc7ide/demo_dll.vcproj
      - copied unchanged from r48604, /trunk/libs/serialization/vc7ide/demo_dll.vcproj
   branches/proto/v4/libs/serialization/vc7ide/dll_a.vcproj
      - copied unchanged from r48604, /trunk/libs/serialization/vc7ide/dll_a.vcproj
   branches/proto/v4/libs/serialization/vc7ide/dll_base.vcproj
      - copied unchanged from r48604, /trunk/libs/serialization/vc7ide/dll_base.vcproj
   branches/proto/v4/libs/serialization/vc7ide/dll_derived2.vcproj
      - copied unchanged from r48604, /trunk/libs/serialization/vc7ide/dll_derived2.vcproj
   branches/proto/v4/libs/serialization/vc7ide/test_complex.vcproj
      - copied unchanged from r48604, /trunk/libs/serialization/vc7ide/test_complex.vcproj
   branches/proto/v4/libs/serialization/vc7ide/test_dll_exported.vcproj
      - copied unchanged from r48604, /trunk/libs/serialization/vc7ide/test_dll_exported.vcproj
   branches/proto/v4/libs/serialization/vc7ide/test_dll_plugin.vcproj
      - copied unchanged from r48604, /trunk/libs/serialization/vc7ide/test_dll_plugin.vcproj
   branches/proto/v4/libs/serialization/vc7ide/test_dll_simple.vcproj
      - copied unchanged from r48604, /trunk/libs/serialization/vc7ide/test_dll_simple.vcproj
   branches/proto/v4/libs/serialization/vc7ide/test_singleton.vcproj
      - copied unchanged from r48604, /trunk/libs/serialization/vc7ide/test_singleton.vcproj
   branches/proto/v4/libs/serialization/vc7ide/test_strong_typedef.vcproj
      - copied unchanged from r48604, /trunk/libs/serialization/vc7ide/test_strong_typedef.vcproj
   branches/proto/v4/libs/serialization/vc7ide/test_valarray.vcproj
      - copied unchanged from r48604, /trunk/libs/serialization/vc7ide/test_valarray.vcproj
   branches/proto/v4/libs/spirit/test/karma/confix.cpp
      - copied unchanged from r48604, /trunk/libs/spirit/test/karma/confix.cpp
   branches/proto/v4/libs/spirit/test/qi/confix.cpp
      - copied unchanged from r48604, /trunk/libs/spirit/test/qi/confix.cpp
   branches/proto/v4/libs/test/doc/src/UTF.log.xsd
      - copied unchanged from r48604, /trunk/libs/test/doc/src/UTF.log.xsd
   branches/proto/v4/libs/test/doc/src/UTF.report.xsd
      - copied unchanged from r48604, /trunk/libs/test/doc/src/UTF.report.xsd
   branches/proto/v4/libs/tr1/test/cyclic_depend/math_special_functions.cpp
      - copied unchanged from r48604, /trunk/libs/tr1/test/cyclic_depend/math_special_functions.cpp
   branches/proto/v4/libs/tr1/test/cyclic_depend/math_tr1.cpp
      - copied unchanged from r48604, /trunk/libs/tr1/test/cyclic_depend/math_tr1.cpp
   branches/proto/v4/libs/tr1/test/test_cmath_tricky.cpp
      - copied unchanged from r48604, /trunk/libs/tr1/test/test_cmath_tricky.cpp
   branches/proto/v4/tools/build/v2/contrib/wxFormBuilder.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/contrib/wxFormBuilder.jam
   branches/proto/v4/tools/build/v2/doc/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/doc/jamfile.jam
   branches/proto/v4/tools/build/v2/example/customization/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/example/customization/jamfile.jam
   branches/proto/v4/tools/build/v2/example/customization/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/example/customization/jamroot.jam
   branches/proto/v4/tools/build/v2/example/generate/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/example/generate/jamroot.jam
   branches/proto/v4/tools/build/v2/example/generator/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/example/generator/jamroot.jam
   branches/proto/v4/tools/build/v2/example/gettext/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/example/gettext/jamfile.jam
   branches/proto/v4/tools/build/v2/example/gettext/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/example/gettext/jamroot.jam
   branches/proto/v4/tools/build/v2/example/hello/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/example/hello/jamroot.jam
   branches/proto/v4/tools/build/v2/example/hello/readme.txt
      - copied unchanged from r48604, /trunk/tools/build/v2/example/hello/readme.txt
   branches/proto/v4/tools/build/v2/example/libraries/app/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/example/libraries/app/jamfile.jam
   branches/proto/v4/tools/build/v2/example/libraries/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/example/libraries/jamroot.jam
   branches/proto/v4/tools/build/v2/example/libraries/util/foo/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/example/libraries/util/foo/jamfile.jam
   branches/proto/v4/tools/build/v2/example/make/foo.py
      - copied unchanged from r48604, /trunk/tools/build/v2/example/make/foo.py
   branches/proto/v4/tools/build/v2/example/make/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/example/make/jamroot.jam
   branches/proto/v4/tools/build/v2/example/pch/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/example/pch/jamroot.jam
   branches/proto/v4/tools/build/v2/example/python_modules/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/example/python_modules/jamroot.jam
   branches/proto/v4/tools/build/v2/example/qt/qt3/hello/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/example/qt/qt3/hello/jamroot.jam
   branches/proto/v4/tools/build/v2/example/qt/qt3/moccable-cpp/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/example/qt/qt3/moccable-cpp/jamroot.jam
   branches/proto/v4/tools/build/v2/example/qt/qt3/uic/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/example/qt/qt3/uic/jamroot.jam
   branches/proto/v4/tools/build/v2/example/qt/qt4/hello/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/example/qt/qt4/hello/jamroot.jam
   branches/proto/v4/tools/build/v2/example/qt/qt4/moccable-cpp/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/example/qt/qt4/moccable-cpp/jamroot.jam
   branches/proto/v4/tools/build/v2/example/qt/qt4/uic/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/example/qt/qt4/uic/jamroot.jam
   branches/proto/v4/tools/build/v2/example/variant/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/example/variant/jamfile.jam
   branches/proto/v4/tools/build/v2/example/variant/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/example/variant/jamroot.jam
   branches/proto/v4/tools/build/v2/example/variant/libs/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/example/variant/libs/jamfile.jam
   branches/proto/v4/tools/build/v2/example/versioned/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/example/versioned/jamroot.jam
   branches/proto/v4/tools/build/v2/test/boostbook/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/boostbook/jamroot.jam
   branches/proto/v4/tools/build/v2/test/dependency-test/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/dependency-test/jamfile.jam
   branches/proto/v4/tools/build/v2/test/dependency-test/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/dependency-test/jamroot.jam
   branches/proto/v4/tools/build/v2/test/direct-request-test/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/direct-request-test/jamfile.jam
   branches/proto/v4/tools/build/v2/test/direct-request-test/jamfile2.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/direct-request-test/jamfile2.jam
   branches/proto/v4/tools/build/v2/test/direct-request-test/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/direct-request-test/jamroot.jam
   branches/proto/v4/tools/build/v2/test/generator_selection.py
      - copied unchanged from r48604, /trunk/tools/build/v2/test/generator_selection.py
   branches/proto/v4/tools/build/v2/test/generators-test/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/generators-test/jamfile.jam
   branches/proto/v4/tools/build/v2/test/generators-test/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/generators-test/jamroot.jam
   branches/proto/v4/tools/build/v2/test/generators-test/lib/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/generators-test/lib/jamfile.jam
   branches/proto/v4/tools/build/v2/test/inherited_dependency.py
      - copied unchanged from r48604, /trunk/tools/build/v2/test/inherited_dependency.py
   branches/proto/v4/tools/build/v2/test/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/jamfile.jam
   branches/proto/v4/tools/build/v2/test/prebuilt/ext/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/prebuilt/ext/jamfile.jam
   branches/proto/v4/tools/build/v2/test/prebuilt/ext/jamfile2.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/prebuilt/ext/jamfile2.jam
   branches/proto/v4/tools/build/v2/test/prebuilt/ext/jamfile3.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/prebuilt/ext/jamfile3.jam
   branches/proto/v4/tools/build/v2/test/prebuilt/ext/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/prebuilt/ext/jamroot.jam
   branches/proto/v4/tools/build/v2/test/prebuilt/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/prebuilt/jamfile.jam
   branches/proto/v4/tools/build/v2/test/prebuilt/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/prebuilt/jamroot.jam
   branches/proto/v4/tools/build/v2/test/project-test1/dir/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/project-test1/dir/jamfile.jam
   branches/proto/v4/tools/build/v2/test/project-test1/dir2/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/project-test1/dir2/jamfile.jam
   branches/proto/v4/tools/build/v2/test/project-test1/dir2/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/project-test1/dir2/jamroot.jam
   branches/proto/v4/tools/build/v2/test/project-test1/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/project-test1/jamfile.jam
   branches/proto/v4/tools/build/v2/test/project-test1/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/project-test1/jamroot.jam
   branches/proto/v4/tools/build/v2/test/project-test3/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/project-test3/jamfile.jam
   branches/proto/v4/tools/build/v2/test/project-test3/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/project-test3/jamroot.jam
   branches/proto/v4/tools/build/v2/test/project-test3/lib/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/project-test3/lib/jamfile.jam
   branches/proto/v4/tools/build/v2/test/project-test3/lib2/helper/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/project-test3/lib2/helper/jamfile.jam
   branches/proto/v4/tools/build/v2/test/project-test3/lib2/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/project-test3/lib2/jamfile.jam
   branches/proto/v4/tools/build/v2/test/project-test3/lib3/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/project-test3/lib3/jamfile.jam
   branches/proto/v4/tools/build/v2/test/project-test3/lib3/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/project-test3/lib3/jamroot.jam
   branches/proto/v4/tools/build/v2/test/project-test4/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/project-test4/jamfile.jam
   branches/proto/v4/tools/build/v2/test/project-test4/jamfile3.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/project-test4/jamfile3.jam
   branches/proto/v4/tools/build/v2/test/project-test4/jamfile4.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/project-test4/jamfile4.jam
   branches/proto/v4/tools/build/v2/test/project-test4/jamfile5.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/project-test4/jamfile5.jam
   branches/proto/v4/tools/build/v2/test/project-test4/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/project-test4/jamroot.jam
   branches/proto/v4/tools/build/v2/test/project-test4/lib/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/project-test4/lib/jamfile.jam
   branches/proto/v4/tools/build/v2/test/project-test4/lib/jamfile1.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/project-test4/lib/jamfile1.jam
   branches/proto/v4/tools/build/v2/test/project-test4/lib/jamfile2.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/project-test4/lib/jamfile2.jam
   branches/proto/v4/tools/build/v2/test/project-test4/lib/jamfile3.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/project-test4/lib/jamfile3.jam
   branches/proto/v4/tools/build/v2/test/project-test4/lib2/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/project-test4/lib2/jamfile.jam
   branches/proto/v4/tools/build/v2/test/project-test4/lib2/jamfile2.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/project-test4/lib2/jamfile2.jam
   branches/proto/v4/tools/build/v2/test/qt4/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/qt4/jamroot.jam
   branches/proto/v4/tools/build/v2/test/railsys/libx/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/railsys/libx/jamroot.jam
   branches/proto/v4/tools/build/v2/test/railsys/libx/src/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/railsys/libx/src/jamfile.jam
   branches/proto/v4/tools/build/v2/test/railsys/program/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/railsys/program/jamfile.jam
   branches/proto/v4/tools/build/v2/test/railsys/program/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/railsys/program/jamroot.jam
   branches/proto/v4/tools/build/v2/test/railsys/program/liba/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/railsys/program/liba/jamfile.jam
   branches/proto/v4/tools/build/v2/test/railsys/program/main/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/railsys/program/main/jamfile.jam
   branches/proto/v4/tools/build/v2/test/test2/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/test2/jamfile.jam
   branches/proto/v4/tools/build/v2/test/test_result_dumping.py
      - copied unchanged from r48604, /trunk/tools/build/v2/test/test_result_dumping.py
   branches/proto/v4/tools/build/v2/test/unused/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/unused/jamfile.jam
   branches/proto/v4/tools/build/v2/test/unused/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/unused/jamroot.jam
   branches/proto/v4/tools/build/v2/test/v1-testing/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/v1-testing/jamfile.jam
   branches/proto/v4/tools/build/v2/test/v1_testing/jamfile.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/v1_testing/jamfile.jam
   branches/proto/v4/tools/build/v2/test/v1_testing/jamroot.jam
      - copied unchanged from r48604, /trunk/tools/build/v2/test/v1_testing/jamroot.jam
   branches/proto/v4/tools/jam/test/parallel_multifile_actions_1.jam
      - copied unchanged from r48604, /trunk/tools/jam/test/parallel_multifile_actions_1.jam
   branches/proto/v4/tools/jam/test/parallel_multifile_actions_2.jam
      - copied unchanged from r48604, /trunk/tools/jam/test/parallel_multifile_actions_2.jam
Removed:
   branches/proto/v4/boost/exception/detail/cloning_base.hpp
   branches/proto/v4/boost/exception/detail/counted_base.hpp
   branches/proto/v4/boost/fusion/tuple/detail/tuple_forward_ctor.hpp
   branches/proto/v4/libs/exception/doc/BOOST_ERROR_INFO.html
   branches/proto/v4/libs/exception/doc/exception_enable_error_info_hpp.html
   branches/proto/v4/libs/exception/doc/exception_enable_exception_cloning_hpp.html
   branches/proto/v4/libs/exception/test/boost_error_info_test.cpp
   branches/proto/v4/libs/exception/test/enable_current_exception_hpp_test.cpp
   branches/proto/v4/libs/exception/test/enable_error_info_hpp_test.cpp
   branches/proto/v4/tools/build/v2/doc/Jamfile.v2
   branches/proto/v4/tools/build/v2/example/customization/Jamfile
   branches/proto/v4/tools/build/v2/example/customization/project-root.jam
   branches/proto/v4/tools/build/v2/example/generate/Jamroot
   branches/proto/v4/tools/build/v2/example/generator/Jamroot
   branches/proto/v4/tools/build/v2/example/gettext/Jamfile
   branches/proto/v4/tools/build/v2/example/gettext/project-root.jam
   branches/proto/v4/tools/build/v2/example/hello/Jamroot
   branches/proto/v4/tools/build/v2/example/libraries/Jamroot
   branches/proto/v4/tools/build/v2/example/libraries/app/Jamfile
   branches/proto/v4/tools/build/v2/example/libraries/util/foo/Jamfile
   branches/proto/v4/tools/build/v2/example/make/Jamroot
   branches/proto/v4/tools/build/v2/example/pch/Jamroot
   branches/proto/v4/tools/build/v2/example/python_modules/Jamroot
   branches/proto/v4/tools/build/v2/example/qt/qt3/hello/Jamroot
   branches/proto/v4/tools/build/v2/example/qt/qt3/moccable-cpp/Jamroot
   branches/proto/v4/tools/build/v2/example/qt/qt3/uic/Jamroot
   branches/proto/v4/tools/build/v2/example/qt/qt4/hello/Jamroot
   branches/proto/v4/tools/build/v2/example/qt/qt4/moccable-cpp/Jamroot
   branches/proto/v4/tools/build/v2/example/qt/qt4/uic/Jamroot
   branches/proto/v4/tools/build/v2/example/variant/Jamfile
   branches/proto/v4/tools/build/v2/example/variant/libs/Jamfile
   branches/proto/v4/tools/build/v2/example/variant/project-root.jam
   branches/proto/v4/tools/build/v2/example/versioned/project-root.jam
   branches/proto/v4/tools/build/v2/test/Jamfile
   branches/proto/v4/tools/build/v2/test/boostbook/Jamroot
   branches/proto/v4/tools/build/v2/test/dependency-test/Jamfile
   branches/proto/v4/tools/build/v2/test/dependency-test/project-root.jam
   branches/proto/v4/tools/build/v2/test/direct-request-test/Jamfile
   branches/proto/v4/tools/build/v2/test/direct-request-test/Jamfile2
   branches/proto/v4/tools/build/v2/test/direct-request-test/project-root.jam
   branches/proto/v4/tools/build/v2/test/generators-test/Jamfile
   branches/proto/v4/tools/build/v2/test/generators-test/lib/Jamfile
   branches/proto/v4/tools/build/v2/test/generators-test/project-root.jam
   branches/proto/v4/tools/build/v2/test/prebuilt/Jamfile
   branches/proto/v4/tools/build/v2/test/prebuilt/ext/Jamfile
   branches/proto/v4/tools/build/v2/test/prebuilt/ext/Jamfile2
   branches/proto/v4/tools/build/v2/test/prebuilt/ext/Jamfile3
   branches/proto/v4/tools/build/v2/test/prebuilt/ext/project-root.jam
   branches/proto/v4/tools/build/v2/test/prebuilt/project-root.jam
   branches/proto/v4/tools/build/v2/test/project-test1/Jamfile
   branches/proto/v4/tools/build/v2/test/project-test1/dir/Jamfile
   branches/proto/v4/tools/build/v2/test/project-test1/dir2/Jamfile
   branches/proto/v4/tools/build/v2/test/project-test1/dir2/project-root.jam
   branches/proto/v4/tools/build/v2/test/project-test1/project-root.jam
   branches/proto/v4/tools/build/v2/test/project-test3/Jamfile
   branches/proto/v4/tools/build/v2/test/project-test3/lib/Jamfile
   branches/proto/v4/tools/build/v2/test/project-test3/lib2/Jamfile
   branches/proto/v4/tools/build/v2/test/project-test3/lib2/helper/Jamfile
   branches/proto/v4/tools/build/v2/test/project-test3/lib3/Jamfile
   branches/proto/v4/tools/build/v2/test/project-test3/lib3/project-root.jam
   branches/proto/v4/tools/build/v2/test/project-test3/project-root.jam
   branches/proto/v4/tools/build/v2/test/project-test4/Jamfile
   branches/proto/v4/tools/build/v2/test/project-test4/Jamfile3
   branches/proto/v4/tools/build/v2/test/project-test4/Jamfile4
   branches/proto/v4/tools/build/v2/test/project-test4/Jamfile5
   branches/proto/v4/tools/build/v2/test/project-test4/lib/Jamfile
   branches/proto/v4/tools/build/v2/test/project-test4/lib/Jamfile1
   branches/proto/v4/tools/build/v2/test/project-test4/lib/Jamfile2
   branches/proto/v4/tools/build/v2/test/project-test4/lib/Jamfile3
   branches/proto/v4/tools/build/v2/test/project-test4/lib2/Jamfile
   branches/proto/v4/tools/build/v2/test/project-test4/lib2/Jamfile2
   branches/proto/v4/tools/build/v2/test/project-test4/project-root.jam
   branches/proto/v4/tools/build/v2/test/qt4/Jamroot
   branches/proto/v4/tools/build/v2/test/railsys/libx/project-root.jam
   branches/proto/v4/tools/build/v2/test/railsys/libx/src/Jamfile
   branches/proto/v4/tools/build/v2/test/railsys/program/Jamfile
   branches/proto/v4/tools/build/v2/test/railsys/program/liba/Jamfile
   branches/proto/v4/tools/build/v2/test/railsys/program/main/Jamfile
   branches/proto/v4/tools/build/v2/test/railsys/program/project-root.jam
   branches/proto/v4/tools/build/v2/test/test2/Jamfile
   branches/proto/v4/tools/build/v2/test/unused/Jamfile
   branches/proto/v4/tools/build/v2/test/unused/project-root.jam
   branches/proto/v4/tools/build/v2/test/v1-testing/Jamfile
   branches/proto/v4/tools/build/v2/test/v1_testing/Jamfile
   branches/proto/v4/tools/build/v2/test/v1_testing/project-root.jam
   branches/proto/v4/tools/jam/test/parallel_multifile_actions.jam
Properties modified:
   branches/proto/v4/ (props changed)
Text files modified:
   branches/proto/v4/Jamroot | 150
   branches/proto/v4/boost/algorithm/string/detail/classification.hpp | 101
   branches/proto/v4/boost/archive/basic_archive.hpp | 6
   branches/proto/v4/boost/archive/basic_binary_iarchive.hpp | 2
   branches/proto/v4/boost/archive/basic_binary_iprimitive.hpp | 10
   branches/proto/v4/boost/archive/basic_binary_oarchive.hpp | 2
   branches/proto/v4/boost/archive/basic_binary_oprimitive.hpp | 10
   branches/proto/v4/boost/archive/basic_text_iarchive.hpp | 2
   branches/proto/v4/boost/archive/basic_text_iprimitive.hpp | 22
   branches/proto/v4/boost/archive/basic_text_oarchive.hpp | 2
   branches/proto/v4/boost/archive/basic_text_oprimitive.hpp | 42
   branches/proto/v4/boost/archive/basic_xml_archive.hpp | 16
   branches/proto/v4/boost/archive/basic_xml_iarchive.hpp | 2
   branches/proto/v4/boost/archive/binary_iarchive_impl.hpp | 2
   branches/proto/v4/boost/archive/binary_oarchive_impl.hpp | 2
   branches/proto/v4/boost/archive/detail/common_iarchive.hpp | 2
   branches/proto/v4/boost/archive/detail/iserializer.hpp | 15
   branches/proto/v4/boost/archive/detail/oserializer.hpp | 20
   branches/proto/v4/boost/archive/impl/basic_binary_iarchive.ipp | 10
   branches/proto/v4/boost/archive/impl/basic_binary_iprimitive.ipp | 14
   branches/proto/v4/boost/archive/impl/basic_binary_oarchive.ipp | 4
   branches/proto/v4/boost/archive/impl/basic_binary_oprimitive.ipp | 4
   branches/proto/v4/boost/archive/impl/basic_text_iarchive.ipp | 10
   branches/proto/v4/boost/archive/impl/basic_text_iprimitive.ipp | 8
   branches/proto/v4/boost/archive/impl/basic_text_oarchive.ipp | 4
   branches/proto/v4/boost/archive/impl/basic_text_oprimitive.ipp | 6
   branches/proto/v4/boost/archive/impl/basic_xml_grammar.hpp | 14
   branches/proto/v4/boost/archive/impl/basic_xml_iarchive.ipp | 8
   branches/proto/v4/boost/archive/impl/basic_xml_oarchive.ipp | 28
   branches/proto/v4/boost/archive/impl/xml_iarchive_impl.ipp | 14
   branches/proto/v4/boost/archive/impl/xml_wiarchive_impl.ipp | 12
   branches/proto/v4/boost/archive/impl/xml_woarchive_impl.ipp | 4
   branches/proto/v4/boost/archive/iterators/base64_from_binary.hpp | 2
   branches/proto/v4/boost/archive/iterators/binary_from_base64.hpp | 6
   branches/proto/v4/boost/archive/iterators/dataflow_exception.hpp | 2
   branches/proto/v4/boost/archive/iterators/insert_linebreaks.hpp | 2
   branches/proto/v4/boost/archive/iterators/mb_from_wchar.hpp | 2
   branches/proto/v4/boost/archive/iterators/remove_whitespace.hpp | 2
   branches/proto/v4/boost/archive/iterators/transform_width.hpp | 2
   branches/proto/v4/boost/archive/iterators/wchar_from_mb.hpp | 6
   branches/proto/v4/boost/archive/iterators/xml_escape.hpp | 2
   branches/proto/v4/boost/archive/iterators/xml_unescape.hpp | 6
   branches/proto/v4/boost/archive/polymorphic_iarchive.hpp | 2
   branches/proto/v4/boost/archive/polymorphic_oarchive.hpp | 2
   branches/proto/v4/boost/archive/shared_ptr_helper.hpp | 4
   branches/proto/v4/boost/asio.hpp | 1
   branches/proto/v4/boost/asio/basic_serial_port.hpp | 14
   branches/proto/v4/boost/asio/basic_socket.hpp | 14
   branches/proto/v4/boost/asio/buffered_read_stream.hpp | 6
   branches/proto/v4/boost/asio/buffered_stream.hpp | 6
   branches/proto/v4/boost/asio/buffered_write_stream.hpp | 6
   branches/proto/v4/boost/asio/completion_condition.hpp | 31
   branches/proto/v4/boost/asio/detail/consuming_buffers.hpp | 39
   branches/proto/v4/boost/asio/detail/descriptor_ops.hpp | 15
   branches/proto/v4/boost/asio/detail/reactive_socket_service.hpp | 225
   branches/proto/v4/boost/asio/detail/select_interrupter.hpp | 3
   branches/proto/v4/boost/asio/detail/socket_ops.hpp | 41
   branches/proto/v4/boost/asio/detail/win_iocp_io_service.hpp | 2
   branches/proto/v4/boost/asio/detail/win_iocp_io_service_fwd.hpp | 1
   branches/proto/v4/boost/asio/detail/win_thread.hpp | 5
   branches/proto/v4/boost/asio/impl/read.ipp | 67
   branches/proto/v4/boost/asio/impl/read_until.ipp | 20
   branches/proto/v4/boost/asio/impl/write.ipp | 25
   branches/proto/v4/boost/asio/io_service.hpp | 1
   branches/proto/v4/boost/asio/posix/basic_descriptor.hpp | 14
   branches/proto/v4/boost/asio/read.hpp | 110
   branches/proto/v4/boost/asio/ssl/detail/openssl_stream_service.hpp | 8
   branches/proto/v4/boost/asio/ssl/stream.hpp | 13
   branches/proto/v4/boost/asio/version.hpp | 2
   branches/proto/v4/boost/asio/windows/basic_handle.hpp | 14
   branches/proto/v4/boost/asio/write.hpp | 116
   branches/proto/v4/boost/circular_buffer/details.hpp | 11
   branches/proto/v4/boost/config/compiler/gcc.hpp | 9
   branches/proto/v4/boost/config/compiler/pgi.hpp | 2
   branches/proto/v4/boost/config/compiler/visualc.hpp | 3
   branches/proto/v4/boost/config/suffix.hpp | 65
   branches/proto/v4/boost/detail/dynamic_bitset.hpp | 91
   branches/proto/v4/boost/dynamic_bitset.hpp | 10
   branches/proto/v4/boost/dynamic_bitset/config.hpp | 6
   branches/proto/v4/boost/dynamic_bitset/dynamic_bitset.hpp | 159
   branches/proto/v4/boost/dynamic_bitset_fwd.hpp | 12
   branches/proto/v4/boost/exception.hpp | 4
   branches/proto/v4/boost/exception/error_info.hpp | 12
   branches/proto/v4/boost/exception/exception.hpp | 383
   branches/proto/v4/boost/exception/info.hpp | 199
   branches/proto/v4/boost/exception_ptr.hpp | 295
   branches/proto/v4/boost/filesystem/convenience.hpp | 2
   branches/proto/v4/boost/filesystem/operations.hpp | 85
   branches/proto/v4/boost/filesystem/path.hpp | 4
   branches/proto/v4/boost/functional/detail/float_functions.hpp | 10
   branches/proto/v4/boost/fusion/include/end.hpp | 4
   branches/proto/v4/boost/fusion/tuple/tuple.hpp | 38
   branches/proto/v4/boost/limits.hpp | 2
   branches/proto/v4/boost/math/concepts/std_real_concept.hpp | 6
   branches/proto/v4/boost/math/special_functions/acosh.hpp | 72
   branches/proto/v4/boost/math/special_functions/asinh.hpp | 71
   branches/proto/v4/boost/math/special_functions/atanh.hpp | 55
   branches/proto/v4/boost/math/special_functions/math_fwd.hpp | 12
   branches/proto/v4/boost/math/tools/config.hpp | 2
   branches/proto/v4/boost/math/tools/precision.hpp | 82
   branches/proto/v4/boost/math/tools/test.hpp | 10
   branches/proto/v4/boost/math/tools/test_data.hpp | 10
   branches/proto/v4/boost/mpi/collectives/all_gather.hpp | 3
   branches/proto/v4/boost/mpi/detail/binary_buffer_iprimitive.hpp | 2
   branches/proto/v4/boost/multi_index/detail/uintptr_type.hpp | 16
   branches/proto/v4/boost/numeric/ublas/functional.hpp | 339
   branches/proto/v4/boost/numeric/ublas/traits.hpp | 22
   branches/proto/v4/boost/numeric/ublas/triangular.hpp | 40
   branches/proto/v4/boost/pending/integer_log2.hpp | 12
   branches/proto/v4/boost/pending/lowest_bit.hpp | 8
   branches/proto/v4/boost/pfto.hpp | 67
   branches/proto/v4/boost/proto/extends.hpp | 1
   branches/proto/v4/boost/proto/matches.hpp | 7
   branches/proto/v4/boost/proto/transform/arg.hpp | 91
   branches/proto/v4/boost/regex/concepts.hpp | 10
   branches/proto/v4/boost/regex/icu.hpp | 10
   branches/proto/v4/boost/regex/v4/basic_regex.hpp | 2
   branches/proto/v4/boost/regex/v4/perl_matcher.hpp | 2
   branches/proto/v4/boost/regex/v4/perl_matcher_non_recursive.hpp | 4
   branches/proto/v4/boost/regex/v4/u32regex_iterator.hpp | 2
   branches/proto/v4/boost/regex/v4/u32regex_token_iterator.hpp | 6
   branches/proto/v4/boost/serialization/access.hpp | 2
   branches/proto/v4/boost/serialization/array.hpp | 2
   branches/proto/v4/boost/serialization/assume_abstract.hpp | 8
   branches/proto/v4/boost/serialization/collection_size_type.hpp | 2
   branches/proto/v4/boost/serialization/detail/shared_count_132.hpp | 8
   branches/proto/v4/boost/serialization/detail/shared_ptr_132.hpp | 14
   branches/proto/v4/boost/serialization/detail/shared_ptr_nmt_132.hpp | 4
   branches/proto/v4/boost/serialization/export.hpp | 2
   branches/proto/v4/boost/serialization/extended_type_info_typeid.hpp | 15
   branches/proto/v4/boost/serialization/serialization.hpp | 6
   branches/proto/v4/boost/serialization/singleton.hpp | 7
   branches/proto/v4/boost/serialization/variant.hpp | 5
   branches/proto/v4/boost/serialization/void_cast.hpp | 18
   branches/proto/v4/boost/smart_cast.hpp | 294
   branches/proto/v4/boost/spirit/home/karma/action/meta_grammar.hpp | 2
   branches/proto/v4/boost/spirit/home/karma/auxiliary.hpp | 1
   branches/proto/v4/boost/spirit/home/karma/auxiliary/functor.hpp | 8
   branches/proto/v4/boost/spirit/home/karma/auxiliary/meta_grammar.hpp | 16
   branches/proto/v4/boost/spirit/home/karma/binary/binary.hpp | 2
   branches/proto/v4/boost/spirit/home/karma/char/char.hpp | 4
   branches/proto/v4/boost/spirit/home/karma/directive/detail/center_alignment_generate.hpp | 6
   branches/proto/v4/boost/spirit/home/karma/numeric/int.hpp | 2
   branches/proto/v4/boost/spirit/home/karma/numeric/real.hpp | 7
   branches/proto/v4/boost/spirit/home/karma/numeric/uint.hpp | 2
   branches/proto/v4/boost/spirit/home/karma/operator/kleene.hpp | 2
   branches/proto/v4/boost/spirit/home/karma/operator/optional.hpp | 65
   branches/proto/v4/boost/spirit/home/karma/operator/plus.hpp | 2
   branches/proto/v4/boost/spirit/home/karma/stream/stream.hpp | 2
   branches/proto/v4/boost/spirit/home/karma/string/lit.hpp | 4
   branches/proto/v4/boost/spirit/home/lex/qi/meta_grammar.hpp | 2
   branches/proto/v4/boost/spirit/home/lex/qi/state/in_state.hpp | 17
   branches/proto/v4/boost/spirit/home/qi/auxiliary.hpp | 1
   branches/proto/v4/boost/spirit/home/qi/auxiliary/functor.hpp | 6
   branches/proto/v4/boost/spirit/home/qi/auxiliary/meta_grammar.hpp | 13
   branches/proto/v4/boost/spirit/home/support/placeholders.hpp | 8
   branches/proto/v4/boost/state_saver.hpp | 87
   branches/proto/v4/boost/static_warning.hpp | 179
   branches/proto/v4/boost/strong_typedef.hpp | 61
   branches/proto/v4/boost/system/error_code.hpp | 3
   branches/proto/v4/boost/thread/locks.hpp | 6
   branches/proto/v4/boost/thread/win32/basic_recursive_mutex.hpp | 10
   branches/proto/v4/boost/thread/win32/basic_timed_mutex.hpp | 10
   branches/proto/v4/boost/throw_exception.hpp | 14
   branches/proto/v4/boost/tr1/cmath.hpp | 2
   branches/proto/v4/boost/tr1/complex.hpp | 56
   branches/proto/v4/boost/tr1/detail/config.hpp | 17
   branches/proto/v4/boost/tr1/detail/config_all.hpp | 5
   branches/proto/v4/boost/tr1/tr1/array | 56
   branches/proto/v4/boost/tr1/tr1/random | 14
   branches/proto/v4/boost/tr1/tr1/tuple | 14
   branches/proto/v4/boost/tr1/tr1/type_traits | 39
   branches/proto/v4/boost/tr1/tr1/unordered_map | 14
   branches/proto/v4/boost/tr1/tr1/unordered_set | 14
   branches/proto/v4/boost/utility/value_init.hpp | 13
   branches/proto/v4/boost/version.hpp | 4
   branches/proto/v4/index.html | 2
   branches/proto/v4/libs/algorithm/string/test/predicate_test.cpp | 23
   branches/proto/v4/libs/asio/doc/examples.qbk | 8
   branches/proto/v4/libs/asio/doc/quickref.xml | 1
   branches/proto/v4/libs/asio/doc/reference.qbk | 986 +
   branches/proto/v4/libs/asio/doc/using.qbk | 7
   branches/proto/v4/libs/asio/example/nonblocking/third_party_lib.cpp | 4
   branches/proto/v4/libs/asio/test/Jamfile | 3
   branches/proto/v4/libs/asio/test/Jamfile.v2 | 6
   branches/proto/v4/libs/asio/test/ip/tcp.cpp | 5
   branches/proto/v4/libs/asio/test/ip/udp.cpp | 5
   branches/proto/v4/libs/asio/test/posix/stream_descriptor.cpp | 5
   branches/proto/v4/libs/asio/test/read.cpp | 189
   branches/proto/v4/libs/asio/test/read_until.cpp | 2
   branches/proto/v4/libs/asio/test/serial_port.cpp | 6
   branches/proto/v4/libs/asio/test/serial_port_base.cpp | 2
   branches/proto/v4/libs/asio/test/ssl/stream.cpp | 5
   branches/proto/v4/libs/asio/test/windows/random_access_handle.cpp | 5
   branches/proto/v4/libs/asio/test/windows/stream_handle.cpp | 5
   branches/proto/v4/libs/asio/test/write.cpp | 171
   branches/proto/v4/libs/circular_buffer/doc/circular_buffer.html | 21
   branches/proto/v4/libs/circular_buffer/doc/space_optimized.html | 13
   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 | 40
   branches/proto/v4/libs/config/doc/html/boost_config/guidelines_for_boost_authors.html | 12
   branches/proto/v4/libs/config/doc/html/boost_config/rationale.html | 8
   branches/proto/v4/libs/config/doc/html/index.html | 38
   branches/proto/v4/libs/config/doc/macro_reference.qbk | 4
   branches/proto/v4/libs/config/test/all/Jamfile.v2 | 5
   branches/proto/v4/libs/config/test/config_info.cpp | 2
   branches/proto/v4/libs/config/test/config_test.cpp | 12
   branches/proto/v4/libs/exception/doc/boost-exception.html | 182
   branches/proto/v4/libs/exception/doc/copy_exception.html | 10
   branches/proto/v4/libs/exception/doc/current_exception.html | 1
   branches/proto/v4/libs/exception/doc/enable_current_exception.html | 8
   branches/proto/v4/libs/exception/doc/enable_error_info.html | 10
   branches/proto/v4/libs/exception/doc/error_info.html | 6
   branches/proto/v4/libs/exception/doc/exception.html | 40
   branches/proto/v4/libs/exception/doc/exception_constructors.html | 2
   branches/proto/v4/libs/exception/doc/exception_error_info_hpp.html | 16
   branches/proto/v4/libs/exception/doc/exception_error_info_value_hpp.html | 1
   branches/proto/v4/libs/exception/doc/exception_exception_hpp.html | 27
   branches/proto/v4/libs/exception/doc/exception_hpp.html | 10
   branches/proto/v4/libs/exception/doc/exception_ptr.html | 5
   branches/proto/v4/libs/exception/doc/get_error_info.html | 11
   branches/proto/v4/libs/exception/doc/name_idx.html | 9
   branches/proto/v4/libs/exception/doc/operator_shl_exception.html | 5
   branches/proto/v4/libs/exception/doc/rethrow_exception.html | 1
   branches/proto/v4/libs/exception/doc/source/boost-exception.reno | 5646 +++++-----
   branches/proto/v4/libs/exception/doc/throw_exception.html | 14
   branches/proto/v4/libs/exception/doc/throw_exception_hpp.html | 31
   branches/proto/v4/libs/exception/example/cloning_1.cpp | 1
   branches/proto/v4/libs/exception/example/example_io.cpp | 16
   branches/proto/v4/libs/exception/example/logging.cpp | 2
   branches/proto/v4/libs/exception/test/Jamfile.v2 | 5
   branches/proto/v4/libs/exception/test/cloning_test.cpp | 430
   branches/proto/v4/libs/exception/test/enable_error_info_test.cpp | 22
   branches/proto/v4/libs/exception/test/errno_test.cpp | 1
   branches/proto/v4/libs/exception/test/error_info_hpp_test.cpp | 1
   branches/proto/v4/libs/exception/test/error_info_test.cpp | 78
   branches/proto/v4/libs/exception/test/exception_hpp_test.cpp | 1
   branches/proto/v4/libs/exception/test/helper1.cpp | 2
   branches/proto/v4/libs/exception/test/info_hpp_test.cpp | 1
   branches/proto/v4/libs/exception/test/info_tuple_hpp_test.cpp | 1
   branches/proto/v4/libs/exception/test/throw_exception_test.cpp | 85
   branches/proto/v4/libs/exception/test/to_string_hpp_test.cpp | 1
   branches/proto/v4/libs/exception/test/to_string_stub_hpp_test.cpp | 1
   branches/proto/v4/libs/exception/test/unknown_exception_test.cpp | 1
   branches/proto/v4/libs/filesystem/doc/index.htm | 2
   branches/proto/v4/libs/filesystem/example/mbcopy.cpp | 5
   branches/proto/v4/libs/filesystem/example/simple_ls.cpp | 19
   branches/proto/v4/libs/filesystem/test/Jamfile.v2 | 1
   branches/proto/v4/libs/filesystem/test/convenience_test.cpp | 37
   branches/proto/v4/libs/filesystem/test/fstream_test.cpp | 3
   branches/proto/v4/libs/filesystem/test/large_file_support_test.cpp | 3
   branches/proto/v4/libs/filesystem/test/msvc/boost_filesystem.sln | 10
   branches/proto/v4/libs/filesystem/test/msvc/convenience_test/convenience_test.vcproj | 4
   branches/proto/v4/libs/filesystem/test/msvc/fstream_test/fstream_test.vcproj | 4
   branches/proto/v4/libs/filesystem/test/msvc/large_file_support_test/large_file_support_test.vcproj | 4
   branches/proto/v4/libs/filesystem/test/msvc/mbcopy/mbcopy.vcproj | 4
   branches/proto/v4/libs/filesystem/test/msvc/operations_test/operations_test.vcproj | 4
   branches/proto/v4/libs/filesystem/test/msvc/path_test/path_test.vcproj | 4
   branches/proto/v4/libs/filesystem/test/msvc/simple_ls/simple_ls.vcproj | 4
   branches/proto/v4/libs/filesystem/test/msvc/wide_test/wide_test.vcproj | 4
   branches/proto/v4/libs/filesystem/test/operations_test.cpp | 81
   branches/proto/v4/libs/filesystem/test/path_test.cpp | 118
   branches/proto/v4/libs/filesystem/test/wide_test.cpp | 3
   branches/proto/v4/libs/fusion/test/Jamfile | 1
   branches/proto/v4/libs/fusion/test/sequence/construction.hpp | 4
   branches/proto/v4/libs/fusion/test/sequence/tuple_construction.cpp | 3
   branches/proto/v4/libs/graph/test/Jamfile.v2 | 2
   branches/proto/v4/libs/graph/test/graphml_test.cpp | 2
   branches/proto/v4/libs/graph/test/graphml_test.xml | 2
   branches/proto/v4/libs/maintainers.txt | 2
   branches/proto/v4/libs/math/doc/html/index.html | 2
   branches/proto/v4/libs/math/doc/sf_and_dist/html/index.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/implementation.html | 46
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/lanczos.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/refs.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/relative_error.html | 2
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/remez.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dist_algorithms.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/bernoulli_dist.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/beta_dist.html | 20
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/binomial_dist.html | 26
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/cauchy_dist.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/chi_squared_dist.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/exp_dist.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/extreme_dist.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/f_dist.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/gamma_dist.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/lognormal_dist.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_beta_dist.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_chi_squared_dist.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_f_dist.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_t_dist.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/negative_binomial_dist.html | 24
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/normal_dist.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/pareto.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/poisson_dist.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/rayleigh.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/students_t_dist.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/triangular_dist.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/uniform_dist.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/weibull.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/nmp.html | 54
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/future.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/overview.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binomial_quiz_example.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg/chi_sq_intervals.html | 2
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/dist_construct_eg.html | 2
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_location_eg.html | 2
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_mean_and_sd_eg.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_scale_eg.html | 2
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/normal_example/normal_misc.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/compilers_overview.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/directories.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/error_handling.html | 40
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/history1.html | 26
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/intro.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/navigation.html | 2
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/tr1.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/comp_compilers.html | 2
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/comparisons.html | 30
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/getting_best.html | 2
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/tuning.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/discrete_quant_ref.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/error_handling_policies.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/internal_promotion.html | 2
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/policy_defaults.html | 32
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/understand_dis_quant.html | 2
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/bessel.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/bessel_over.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/mbessel.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/sph_bessel.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_1.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_2.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_3.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_carlson.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_intro.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/expint/expint_i.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/expint/expint_n.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/extern_c/c99.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/extern_c/tr1.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/extern_c/tr1_ref.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_binomial.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_double_factorial.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_factorial.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_falling_factorial.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_rising_factorial.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/fpclass.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/acosh.html | 57
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/asinh.html | 56
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/atanh.html | 52
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/float_advance.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/float_distance.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/float_next.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/float_prior.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/nextafter.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/cbrt.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/ct_pow.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/expm1.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/hypot.html | 2
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/log1p.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/powm1.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/sqrt1pm1.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta/beta_derivative.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta/beta_function.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta/ibeta_function.html | 18
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta/ibeta_inv_function.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_erf/error_function.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_erf/error_inv.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/digamma.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/gamma_derivatives.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/gamma_ratios.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/igamma.html | 20
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/igamma_inv.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/lgamma.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/tgamma.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/hermite.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/laguerre.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/legendre.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/sph_harm.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/zetas/zeta.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/compilers.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/history1.html | 26
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/issues.html | 29
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/cf.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/minima.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/rational.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/roots.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/roots2.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/series_evaluation.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/error_test.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/polynomials.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/test_data.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt/concepts.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/implementation.qbk | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/inv_hyper.qbk | 116
   branches/proto/v4/libs/math/doc/sf_and_dist/issues.qbk | 7
   branches/proto/v4/libs/math/doc/sf_and_dist/roadmap.qbk | 7
   branches/proto/v4/libs/math/test/Jamfile.v2 | 1
   branches/proto/v4/libs/math/test/handle_test_result.hpp | 8
   branches/proto/v4/libs/math/test/test_classify.cpp | 90
   branches/proto/v4/libs/multi_index/doc/release_notes.html | 11
   branches/proto/v4/libs/proto/doc/calculator.qbk | 2
   branches/proto/v4/libs/proto/doc/construction.qbk | 8
   branches/proto/v4/libs/proto/doc/extensibility.qbk | 7
   branches/proto/v4/libs/proto/doc/glossary.qbk | 18
   branches/proto/v4/libs/proto/doc/proto.qbk | 162
   branches/proto/v4/libs/proto/doc/protodoc.xml | 132
   branches/proto/v4/libs/proto/doc/rationale.qbk | 96
   branches/proto/v4/libs/proto/doc/resources.qbk | 10
   branches/proto/v4/libs/proto/test/examples.cpp | 25
   branches/proto/v4/libs/random/index.html | 2
   branches/proto/v4/libs/regex/build/Jamfile.v2 | 4
   branches/proto/v4/libs/regex/src/usinstances.cpp | 49
   branches/proto/v4/libs/regex/test/pathology/bad_expression_test.cpp | 3
   branches/proto/v4/libs/regex/test/regress/test_tricky_cases.cpp | 3
   branches/proto/v4/libs/serialization/example/demo_fast_archive.cpp | 2
   branches/proto/v4/libs/serialization/example/portable_binary_archive.hpp | 2
   branches/proto/v4/libs/serialization/example/portable_binary_iarchive.cpp | 14
   branches/proto/v4/libs/serialization/example/portable_binary_oarchive.cpp | 6
   branches/proto/v4/libs/serialization/src/basic_archive.cpp | 4
   branches/proto/v4/libs/serialization/src/basic_iarchive.cpp | 20
   branches/proto/v4/libs/serialization/src/basic_oarchive.cpp | 18
   branches/proto/v4/libs/serialization/src/basic_xml_archive.cpp | 16
   branches/proto/v4/libs/serialization/src/basic_xml_grammar.ipp | 49
   branches/proto/v4/libs/serialization/src/extended_type_info.cpp | 10
   branches/proto/v4/libs/serialization/src/extended_type_info_typeid.cpp | 22
   branches/proto/v4/libs/serialization/src/xml_wgrammar.cpp | 97
   branches/proto/v4/libs/serialization/src/xml_woarchive.cpp | 2
   branches/proto/v4/libs/serialization/test/D.hpp | 2
   branches/proto/v4/libs/serialization/test/test_delete_pointer.cpp | 4
   branches/proto/v4/libs/serialization/test/test_diamond.cpp | 2
   branches/proto/v4/libs/serialization/test/test_iterators_base64.cpp | 2
   branches/proto/v4/libs/serialization/test/test_private_ctor.cpp | 19
   branches/proto/v4/libs/serialization/test/test_smart_cast.cpp | 4
   branches/proto/v4/libs/serialization/test/test_static_warning.cpp | 2
   branches/proto/v4/libs/serialization/test/test_variant.cpp | 2
   branches/proto/v4/libs/serialization/vc7ide/BoostSerializationLibrary.sln | 19833 ++++++++++++++++++++++++++-------------
   branches/proto/v4/libs/serialization/vc7ide/Library.vcproj | 2925 +++-
   branches/proto/v4/libs/serialization/vc7ide/LibraryW.vcproj | 1632 ++-
   branches/proto/v4/libs/serialization/vc7ide/test_contained_class.vcproj | 5142 ++++++---
   branches/proto/v4/libs/serialization/vc7ide/test_delete_pointer.vcproj | 5115 ++++++---
   branches/proto/v4/libs/serialization/vc7ide/test_diamond.vcproj | 5121 ++++++---
   branches/proto/v4/libs/serialization/vc7ide/test_exported.vcproj | 5166 ++++++---
   branches/proto/v4/libs/serialization/vc7ide/test_private_ctor.vcproj | 1227 +
   branches/proto/v4/libs/serialization/vc7ide/test_reset_object_addr.vcproj | 1245 +
   branches/proto/v4/libs/serialization/vc7ide/test_simple_class.vcproj | 5157 ++++++---
   branches/proto/v4/libs/spirit/classic/test/mix_and_match_trees.cpp | 6
   branches/proto/v4/libs/spirit/classic/test/numerics_tests.cpp | 3
   branches/proto/v4/libs/spirit/test/Jamfile | 50
   branches/proto/v4/libs/spirit/test/karma/optional.cpp | 31
   branches/proto/v4/libs/spirit/test/karma/test.hpp | 50
   branches/proto/v4/libs/system/src/error_code.cpp | 6
   branches/proto/v4/libs/thread/doc/changes.qbk | 3
   branches/proto/v4/libs/thread/src/win32/thread.cpp | 22
   branches/proto/v4/libs/thread/src/win32/tss_pe.cpp | 46
   branches/proto/v4/libs/thread/test/test_mutex.cpp | 84
   branches/proto/v4/libs/tr1/test/test_cmath.cpp | 683
   branches/proto/v4/libs/tr1/test/test_complex.cpp | 7
   branches/proto/v4/libs/utility/value_init.htm | 8
   branches/proto/v4/libs/utility/value_init_test.cpp | 41
   branches/proto/v4/tools/bcp/add_path.cpp | 4
   branches/proto/v4/tools/boostbook/setup_boostbook.py | 5
   branches/proto/v4/tools/boostbook/setup_boostbook.sh | 3
   branches/proto/v4/tools/build/v2/build-system.jam | 34
   branches/proto/v4/tools/build/v2/build/alias.jam | 18
   branches/proto/v4/tools/build/v2/build/generators.jam | 496
   branches/proto/v4/tools/build/v2/build/project.jam | 15
   branches/proto/v4/tools/build/v2/build/property-set.jam | 10
   branches/proto/v4/tools/build/v2/build/property.jam | 44
   branches/proto/v4/tools/build/v2/build/targets.jam | 38
   branches/proto/v4/tools/build/v2/build/toolset.jam | 25
   branches/proto/v4/tools/build/v2/build/type.jam | 24
   branches/proto/v4/tools/build/v2/doc/src/faq.xml | 528
   branches/proto/v4/tools/build/v2/doc/src/tasks.xml | 939
   branches/proto/v4/tools/build/v2/example/customization/readme.txt | 10
   branches/proto/v4/tools/build/v2/example/customization/usage.verbatim | 5
   branches/proto/v4/tools/build/v2/example/generate/REAME.txt | 18
   branches/proto/v4/tools/build/v2/example/generator/README.txt | 7
   branches/proto/v4/tools/build/v2/example/gettext/readme.txt | 13
   branches/proto/v4/tools/build/v2/example/make/main_cpp.pro | 3
   branches/proto/v4/tools/build/v2/example/make/readme.txt | 10
   branches/proto/v4/tools/build/v2/example/python_modules/readme.txt | 15
   branches/proto/v4/tools/build/v2/example/qt/README.txt | 15
   branches/proto/v4/tools/build/v2/example/variant/readme.txt | 16
   branches/proto/v4/tools/build/v2/kernel/modules.jam | 2
   branches/proto/v4/tools/build/v2/roll.sh | 2
   branches/proto/v4/tools/build/v2/test/abs_workdir.py | 10
   branches/proto/v4/tools/build/v2/test/absolute_sources.py | 64
   branches/proto/v4/tools/build/v2/test/alias.py | 21
   branches/proto/v4/tools/build/v2/test/alternatives.py | 79
   branches/proto/v4/tools/build/v2/test/bad_dirname.py | 19
   branches/proto/v4/tools/build/v2/test/boostbook.py | 12
   branches/proto/v4/tools/build/v2/test/build_dir.py | 90
   branches/proto/v4/tools/build/v2/test/build_file.py | 42
   branches/proto/v4/tools/build/v2/test/build_no.py | 27
   branches/proto/v4/tools/build/v2/test/c_file.py | 22
   branches/proto/v4/tools/build/v2/test/chain.py | 40
   branches/proto/v4/tools/build/v2/test/clean.py | 2
   branches/proto/v4/tools/build/v2/test/composite.py | 18
   branches/proto/v4/tools/build/v2/test/conditionals.py | 8
   branches/proto/v4/tools/build/v2/test/conditionals2.py | 8
   branches/proto/v4/tools/build/v2/test/conditionals3.py | 8
   branches/proto/v4/tools/build/v2/test/conditionals_multiple.py | 7
   branches/proto/v4/tools/build/v2/test/configuration.py | 5
   branches/proto/v4/tools/build/v2/test/core_d12.py | 15
   branches/proto/v4/tools/build/v2/test/core_delete_module.py | 12
   branches/proto/v4/tools/build/v2/test/core_dependencies.py | 73
   branches/proto/v4/tools/build/v2/test/core_import_module.py | 29
   branches/proto/v4/tools/build/v2/test/core_modifiers.py | 27
   branches/proto/v4/tools/build/v2/test/core_varnames.py | 9
   branches/proto/v4/tools/build/v2/test/custom_generator.py | 28
   branches/proto/v4/tools/build/v2/test/default_build.py | 64
   branches/proto/v4/tools/build/v2/test/default_features.py | 34
   branches/proto/v4/tools/build/v2/test/default_toolset.py | 6
   branches/proto/v4/tools/build/v2/test/dependency_property.py | 27
   branches/proto/v4/tools/build/v2/test/dependency_test.py | 53
   branches/proto/v4/tools/build/v2/test/direct_request_test.py | 44
   branches/proto/v4/tools/build/v2/test/disambiguation.py | 33
   branches/proto/v4/tools/build/v2/test/dll_path.py | 91
   branches/proto/v4/tools/build/v2/test/double_loading.py | 19
   branches/proto/v4/tools/build/v2/test/duplicate.py | 37
   branches/proto/v4/tools/build/v2/test/example_customization.py | 18
   branches/proto/v4/tools/build/v2/test/example_gettext.py | 17
   branches/proto/v4/tools/build/v2/test/example_libraries.py | 17
   branches/proto/v4/tools/build/v2/test/example_make.py | 20
   branches/proto/v4/tools/build/v2/test/example_qt4.py | 6
   branches/proto/v4/tools/build/v2/test/expansion.py | 65
   branches/proto/v4/tools/build/v2/test/explicit.py | 38
   branches/proto/v4/tools/build/v2/test/file_name_handling.py | 5
   branches/proto/v4/tools/build/v2/test/free_features_request.py | 29
   branches/proto/v4/tools/build/v2/test/gcc_runtime.py | 24
   branches/proto/v4/tools/build/v2/test/generators_test.py | 35
   branches/proto/v4/tools/build/v2/test/implicit_dependency.py | 30
   branches/proto/v4/tools/build/v2/test/indirect_conditional.py | 34
   branches/proto/v4/tools/build/v2/test/inherit_toolset.py | 67
   branches/proto/v4/tools/build/v2/test/inline.py | 42
   branches/proto/v4/tools/build/v2/test/lib_source_property.py | 32
   branches/proto/v4/tools/build/v2/test/library_chain.py | 103
   branches/proto/v4/tools/build/v2/test/library_order.py | 80
   branches/proto/v4/tools/build/v2/test/library_property.py | 42
   branches/proto/v4/tools/build/v2/test/load_dir.py | 29
   branches/proto/v4/tools/build/v2/test/load_order.py | 55
   branches/proto/v4/tools/build/v2/test/loop.py | 25
   branches/proto/v4/tools/build/v2/test/m1-01.py | 28
   branches/proto/v4/tools/build/v2/test/m1-02.py | 44
   branches/proto/v4/tools/build/v2/test/m1-03.py | 20
   branches/proto/v4/tools/build/v2/test/make_rule.py | 48
   branches/proto/v4/tools/build/v2/test/module_actions.py | 2
   branches/proto/v4/tools/build/v2/test/ndebug.py | 39
   branches/proto/v4/tools/build/v2/test/no_type.py | 15
   branches/proto/v4/tools/build/v2/test/notfile.py | 30
   branches/proto/v4/tools/build/v2/test/ordered_include.py | 16
   branches/proto/v4/tools/build/v2/test/ordered_properties.py | 36
   branches/proto/v4/tools/build/v2/test/out_of_tree.py | 43
   branches/proto/v4/tools/build/v2/test/path_features.py | 40
   branches/proto/v4/tools/build/v2/test/pch.py | 63
   branches/proto/v4/tools/build/v2/test/prebuilt.py | 40
   branches/proto/v4/tools/build/v2/test/print.py | 13
   branches/proto/v4/tools/build/v2/test/project_dependencies.py | 44
   branches/proto/v4/tools/build/v2/test/project_glob.py | 123
   branches/proto/v4/tools/build/v2/test/project_root_constants.py | 34
   branches/proto/v4/tools/build/v2/test/project_root_rule.py | 38
   branches/proto/v4/tools/build/v2/test/project_test1.py | 17
   branches/proto/v4/tools/build/v2/test/project_test3.py | 38
   branches/proto/v4/tools/build/v2/test/project_test4.py | 31
   branches/proto/v4/tools/build/v2/test/property_expansion.py | 19
   branches/proto/v4/tools/build/v2/test/qt4.py | 17
   branches/proto/v4/tools/build/v2/test/railsys.py | 10
   branches/proto/v4/tools/build/v2/test/rebuilds.py | 8
   branches/proto/v4/tools/build/v2/test/regression.py | 66
   branches/proto/v4/tools/build/v2/test/relative_sources.py | 19
   branches/proto/v4/tools/build/v2/test/remove_requirement.py | 90
   branches/proto/v4/tools/build/v2/test/resolution.py | 33
   branches/proto/v4/tools/build/v2/test/searched_lib.py | 109
   branches/proto/v4/tools/build/v2/test/skipping.py | 46
   branches/proto/v4/tools/build/v2/test/sort_rule.py | 6
   branches/proto/v4/tools/build/v2/test/source_locations.py | 37
   branches/proto/v4/tools/build/v2/test/stage.py | 155
   branches/proto/v4/tools/build/v2/test/standalone.py | 34
   branches/proto/v4/tools/build/v2/test/startup_v1.py | 84
   branches/proto/v4/tools/build/v2/test/startup_v2.py | 28
   branches/proto/v4/tools/build/v2/test/suffix.py | 37
   branches/proto/v4/tools/build/v2/test/svn_tree.py | 14
   branches/proto/v4/tools/build/v2/test/symlink.py | 41
   branches/proto/v4/tools/build/v2/test/tag.py | 24
   branches/proto/v4/tools/build/v2/test/template.py | 49
   branches/proto/v4/tools/build/v2/test/test1.py | 5
   branches/proto/v4/tools/build/v2/test/test2.py | 23
   branches/proto/v4/tools/build/v2/test/test_all.py | 170
   branches/proto/v4/tools/build/v2/test/test_system.html | 19
   branches/proto/v4/tools/build/v2/test/testing_primitives.py | 19
   branches/proto/v4/tools/build/v2/test/timedata.py | 1
   branches/proto/v4/tools/build/v2/test/tree.py | 18
   branches/proto/v4/tools/build/v2/test/unit_test.py | 17
   branches/proto/v4/tools/build/v2/test/unit_tests.py | 5
   branches/proto/v4/tools/build/v2/test/unused.py | 19
   branches/proto/v4/tools/build/v2/test/use_requirements.py | 272
   branches/proto/v4/tools/build/v2/test/using.py | 36
   branches/proto/v4/tools/build/v2/test/v1_testing.py | 30
   branches/proto/v4/tools/build/v2/test/wrapper.py | 38
   branches/proto/v4/tools/build/v2/test/wrong_project.py | 31
   branches/proto/v4/tools/build/v2/tools/builtin.jam | 18
   branches/proto/v4/tools/build/v2/tools/common.jam | 106
   branches/proto/v4/tools/build/v2/tools/cw.jam | 5
   branches/proto/v4/tools/build/v2/tools/gcc.jam | 257
   branches/proto/v4/tools/build/v2/tools/generate.jam | 36
   branches/proto/v4/tools/build/v2/tools/intel-win.jam | 109
   branches/proto/v4/tools/build/v2/tools/msvc.jam | 1399 +-
   branches/proto/v4/tools/build/v2/tools/package.jam | 121
   branches/proto/v4/tools/build/v2/tools/python.jam | 6
   branches/proto/v4/tools/build/v2/tools/qcc.jam | 72
   branches/proto/v4/tools/build/v2/tools/stage.jam | 14
   branches/proto/v4/tools/build/v2/tools/testing.jam | 217
   branches/proto/v4/tools/build/v2/tools/vacpp.jam | 2
   branches/proto/v4/tools/build/v2/util/doc.jam | 8
   branches/proto/v4/tools/build/v2/util/option.jam | 42
   branches/proto/v4/tools/build/v2/util/utility.jam | 222
   branches/proto/v4/tools/index.html | 4
   branches/proto/v4/tools/inspect/inspect.cpp | 2
   branches/proto/v4/tools/inspect/link_check.cpp | 124
   branches/proto/v4/tools/inspect/link_check.hpp | 2
   branches/proto/v4/tools/inspect/path_name_check.cpp | 1
   branches/proto/v4/tools/jam/doc/bjam.qbk | 8
   branches/proto/v4/tools/jam/src/Jambase | 13
   branches/proto/v4/tools/jam/src/boost-jam.spec | 128
   branches/proto/v4/tools/jam/src/build.bat | 2
   branches/proto/v4/tools/jam/src/build.jam | 27
   branches/proto/v4/tools/jam/src/build.sh | 34
   branches/proto/v4/tools/jam/src/build_vms.com | 30
   branches/proto/v4/tools/jam/src/builtins.c | 1759 +-
   branches/proto/v4/tools/jam/src/class.c | 162
   branches/proto/v4/tools/jam/src/command.c | 66
   branches/proto/v4/tools/jam/src/command.h | 53
   branches/proto/v4/tools/jam/src/compile.c | 1138 +-
   branches/proto/v4/tools/jam/src/compile.h | 42
   branches/proto/v4/tools/jam/src/debug.c | 95
   branches/proto/v4/tools/jam/src/debug.h | 15
   branches/proto/v4/tools/jam/src/execcmd.h | 33
   branches/proto/v4/tools/jam/src/execmac.c | 50
   branches/proto/v4/tools/jam/src/execnt.c | 1277 +-
   branches/proto/v4/tools/jam/src/execunix.c | 737
   branches/proto/v4/tools/jam/src/execvms.c | 250
   branches/proto/v4/tools/jam/src/expand.c | 781
   branches/proto/v4/tools/jam/src/expand.h | 2
   branches/proto/v4/tools/jam/src/filemac.c | 133
   branches/proto/v4/tools/jam/src/filent.c | 270
   branches/proto/v4/tools/jam/src/fileos2.c | 53
   branches/proto/v4/tools/jam/src/filesys.c | 31
   branches/proto/v4/tools/jam/src/filesys.h | 38
   branches/proto/v4/tools/jam/src/fileunix.c | 332
   branches/proto/v4/tools/jam/src/filevms.c | 218
   branches/proto/v4/tools/jam/src/frames.c | 2
   branches/proto/v4/tools/jam/src/frames.h | 42
   branches/proto/v4/tools/jam/src/glob.c | 235
   branches/proto/v4/tools/jam/src/hash.c | 333
   branches/proto/v4/tools/jam/src/hash.h | 18
   branches/proto/v4/tools/jam/src/hcache.c | 613
   branches/proto/v4/tools/jam/src/hdrmacro.c | 62
   branches/proto/v4/tools/jam/src/headers.c | 174
   branches/proto/v4/tools/jam/src/jam.c | 600
   branches/proto/v4/tools/jam/src/jam.h | 866
   branches/proto/v4/tools/jam/src/jambase.h | 2
   branches/proto/v4/tools/jam/src/jamgram.c | 24
   branches/proto/v4/tools/jam/src/jamgram.y | 34
   branches/proto/v4/tools/jam/src/jamgram.yy | 32
   branches/proto/v4/tools/jam/src/lists.c | 316
   branches/proto/v4/tools/jam/src/lists.h | 70
   branches/proto/v4/tools/jam/src/make.c | 1321 +-
   branches/proto/v4/tools/jam/src/make.h | 16
   branches/proto/v4/tools/jam/src/make1.c | 1597 +-
   branches/proto/v4/tools/jam/src/mem.c | 8
   branches/proto/v4/tools/jam/src/mem.h | 4
   branches/proto/v4/tools/jam/src/mkjambase.c | 196
   branches/proto/v4/tools/jam/src/modules.c | 104
   branches/proto/v4/tools/jam/src/native.h | 4
   branches/proto/v4/tools/jam/src/newstr.c | 116
   branches/proto/v4/tools/jam/src/newstr.h | 8
   branches/proto/v4/tools/jam/src/option.c | 129
   branches/proto/v4/tools/jam/src/option.h | 8
   branches/proto/v4/tools/jam/src/output.c | 101
   branches/proto/v4/tools/jam/src/output.h | 2
   branches/proto/v4/tools/jam/src/parse.c | 175
   branches/proto/v4/tools/jam/src/parse.h | 70
   branches/proto/v4/tools/jam/src/pathmac.c | 287
   branches/proto/v4/tools/jam/src/pathsys.h | 53
   branches/proto/v4/tools/jam/src/pathunix.c | 198
   branches/proto/v4/tools/jam/src/pathvms.c | 434
   branches/proto/v4/tools/jam/src/regexp.c | 1974 ++-
   branches/proto/v4/tools/jam/src/regexp.h | 16
   branches/proto/v4/tools/jam/src/rules.c | 738
   branches/proto/v4/tools/jam/src/rules.h | 400
   branches/proto/v4/tools/jam/src/scan.c | 644
   branches/proto/v4/tools/jam/src/scan.h | 47
   branches/proto/v4/tools/jam/src/search.c | 136
   branches/proto/v4/tools/jam/src/search.h | 2
   branches/proto/v4/tools/jam/src/strings.c | 14
   branches/proto/v4/tools/jam/src/subst.c | 16
   branches/proto/v4/tools/jam/src/timestamp.c | 286
   branches/proto/v4/tools/jam/src/timestamp.h | 4
   branches/proto/v4/tools/jam/src/variable.c | 574
   branches/proto/v4/tools/jam/src/variable.h | 18
   branches/proto/v4/tools/jam/src/w32_getreg.c | 38
   branches/proto/v4/tools/jam/src/yyacc.c | 8
   branches/proto/v4/tools/jam/test/test.jam | 3
   branches/proto/v4/tools/regression/xsl_reports/build_results.sh | 5
   705 files changed, 60041 insertions(+), 39964 deletions(-)

Modified: branches/proto/v4/Jamroot
==============================================================================
--- branches/proto/v4/Jamroot (original)
+++ branches/proto/v4/Jamroot 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -114,10 +114,11 @@
 import symlink ;
 
 path-constant BOOST_ROOT : . ;
-constant BOOST_VERSION : 1.36.0 ;
+constant BOOST_VERSION : 1.37.0 ;
 constant BOOST_JAMROOT_MODULE : $(__name__) ;
 
-local version-tag = [ MATCH "^([^.]+)[.]([^.]+)[.]([^.]+)" : $(BOOST_VERSION) ] ;
+local version-tag = [ MATCH "^([^.]+)[.]([^.]+)[.]([^.]+)" : $(BOOST_VERSION) ]
+ ;
 if $(version-tag[3]) = 0
 {
     version-tag = $(version-tag[1-2]) ;
@@ -125,8 +126,7 @@
 
 constant BOOST_VERSION_TAG : $(version-tag:J="_") ;
 
-# Option to choose how many variants to build. The default is "minimal",
-# which builds only the "release <threading>multi <link>shared" variant.
+# Option to choose how many variants to build. The default is "minimal".
 local build-type = [ MATCH "^--build-type=(.*)" : [ modules.peek : ARGV ] ] ;
 build-type ?= minimal ;
 if ! ( $(build-type) in minimal complete )
@@ -151,8 +151,8 @@
 # Set the default build.
 local default-build = $(default-build,$(build-type)) ;
 
-# We only use the default build when building at the root to
-# avoid having it impact the default regression testing of "debug".
+# We only use the default build when building at the root to avoid having it
+# impact the default regression testing of "debug".
 # TODO: Consider having a "testing" build type instead of this check.
 if $(__file__:D) != ""
 {
@@ -162,17 +162,14 @@
 
 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) )
+ # This property combination is dangerous. Ideally, we would add a constraint
+ # to default build, so that user can build this property combination only if
+ # requested directly. But we do not have any 'constraint' system for
+ # default-build, so we 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) )
     {
         return <build>no ;
     }
@@ -181,23 +178,22 @@
 
 project boost
     : requirements <include>.
- # disable auto-linking for all targets here,
- # primarily because it caused troubles with V2
+ # Disable auto-linking for all targets here, primarily because it caused
+ # troubles with V2.
       <define>BOOST_ALL_NO_LIB=1
- # Used to encode variant in target name. See the
- # 'tag' rule below.
+ # Used to encode variant in target name. See the 'tag' rule below.
       <tag>@$(__name__).tag
       <conditional>@handle-static-runtime
-
     : usage-requirements <include>.
     : build-dir bin.v2
     : default-build $(default-build)
     ;
 
+
 # Setup convenient aliases for all libraries.
 
-all-libraries =
- [ MATCH .*libs/(.*)/build/.* : [ glob libs/*/build/Jamfile.v2 ] [ glob libs/*/build/Jamfile ] ]
+all-libraries = [ MATCH .*libs/(.*)/build/.* : [ glob libs/*/build/Jamfile.v2 ]
+ [ glob libs/*/build/Jamfile ] ]
     ;
 
 all-libraries = [ sequence.unique $(all-libraries) ] ;
@@ -209,6 +205,7 @@
     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 ;
@@ -231,13 +228,14 @@
 # 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 and installed.
+#
 rule libraries-to-install ( existing-libraries * )
 {
    local argv = [ modules.peek : ARGV ] ;
    local with-parameter = [ MATCH --with-(.*) : $(argv) ] ;
    local without-parameter = [ MATCH --without-(.*) : $(argv) ] ;
 
- # Do some checks
+ # Do some checks.
    if $(with-parameter) && $(without-parameter)
    {
        ECHO "error: both --with-<library> and --without-<library> specified" ;
@@ -267,22 +265,25 @@
    }
 }
 
-# what kind of layout are we doing?
+
+# What kind of layout are we doing?
 layout = [ MATCH "^--layout=(.*)" : [ modules.peek : ARGV ] ] ;
 layout ?= versioned ;
 layout-$(layout) = true ;
 
-# possible stage only location
+
+# Possible stage only location.
 local stage-locate = [ MATCH "^--stagedir=(.*)" : [ modules.peek : ARGV ] ] ;
 stage-locate ?= stage ;
-
 path-constant BOOST_STAGE_LOCATE : $(stage-locate) ;
 
 
-# location of python
-local python-root = [ MATCH "^--with-python-root=(.*)" : [ modules.peek : ARGV ] ] ;
+# Python location.
+local python-root = [ MATCH "^--with-python-root=(.*)" : [ modules.peek : ARGV ]
+ ] ;
 PYTHON_ROOT ?= $(python-root) ;
 
+
 # Select the libraries to install.
 libraries = [ libraries-to-install $(all-libraries) ] ;
 
@@ -303,9 +304,11 @@
     constant BUILD_ID : [ regex.replace $(build-id) "[*\\/:.\"\' ]" "_" ] ;
 }
 
-# This rule is called by Boost.Build to determine the name of
-# target. We use it to encode build variant, compiler name and
-# boost version in the target name
+
+# This rule is called by Boost.Build to determine the name of target. We use it
+# to encode the build variant, compiler name and boost version in the target
+# name.
+#
 rule tag ( name : type ? : property-set )
 {
     if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB
@@ -317,14 +320,13 @@
                 -$(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
- # errors when library is generated with version suffix.
- # On OSX, version suffix is not needed -- the linker expets
- # libFoo.1.2.3.dylib format.
- # AIX linkers don't accept version suffixes either.
- # Pgi compilers can't accept library with version suffix
+ # Optionally add version suffix. On NT, library with version suffix
+ # will not be recognized by linkers. On CYGWIN, we get strage
+ # duplicate symbol errors when library is generated with version
+ # suffix. On OSX, version suffix is not needed -- the linker expects
+ # the libFoo.1.2.3.dylib format. AIX linkers do not accept version
+ # suffixes either. Pgi compilers can not accept library with version
+ # suffix.
             if $(type) = SHARED_LIB &&
               ( ! ( [ $(property-set).get <target-os> ] in windows cygwin darwin aix ) &&
                 ! ( [ $(property-set).get <toolset> ] in pgi ) )
@@ -336,18 +338,17 @@
         }
         else
         {
- return [ common.format-name
- <base> <threading> <runtime> -$(BUILD_ID)
- : $(name) : $(type) : $(property-set) ] ;
+ return [ common.format-name <base> <threading> <runtime>
+ -$(BUILD_ID) : $(name) : $(type) : $(property-set) ] ;
         }
     }
 }
 
+
 # Install to system location.
 
-local install-requirements =
- <install-source-root>boost
- ;
+install-requirements = <install-source-root>$(BOOST_ROOT)/boost ;
+
 if $(layout-versioned)
 {
     install-requirements += <install-header-subdir>boost-$(BOOST_VERSION_TAG)/boost ;
@@ -366,32 +367,30 @@
 }
 
 local headers =
- [ path.glob-tree boost : *.hpp *.ipp *.h *.inc : CVS ]
- [ path.glob-tree boost/compatibility/cpp_c_headers : c* : CVS ]
- ;
+ [ path.glob-tree $(BOOST_ROOT)/boost : *.hpp *.ipp *.h *.inc : CVS .svn ]
+ [ path.glob-tree $(BOOST_ROOT)/boost/compatibility/cpp_c_headers : c* : CVS
+ .svn ] ;
 
-
-# Complete install
+# Complete install.
 package.install install-proper
- : $(install-requirements) <install-no-version-symlinks>on
+ : $(install-requirements) <install-no-version-symlinks>on
     :
- : libs/$(libraries)/build
- : $(headers)
+ : libs/$(libraries)/build
+ : $(headers)
     ;
 explicit install-proper ;
 
 # Install just library.
 install stage-proper
- : libs/$(libraries)/build
- : <location>$(stage-locate)/lib
- <install-dependencies>on <install-type>LIB
- <install-no-version-symlinks>on
+ : libs/$(libraries)/build
+ : <location>$(stage-locate)/lib
+ <install-dependencies>on <install-type>LIB
+ <install-no-version-symlinks>on
     ;
 explicit stage-proper ;
 
 
-if $(layout-versioned)
- && ( [ modules.peek : NT ] || [ modules.peek : UNIX ] )
+if $(layout-versioned) && ( [ modules.peek : NT ] || [ modules.peek : UNIX ] )
 {
     rule make-unversioned-links ( project name ? : property-set : sources * )
     {
@@ -410,7 +409,8 @@
             }
             else
             {
- m = [ MATCH "(.*[.]so[.0-9]+)" "(.*[.]dylib)" "(.*[.]a)" : [ $(s).name ] ] ;
+ m = [ MATCH "(.*[.]so[.0-9]+)" "(.*[.]dylib)" "(.*[.]a)" :
+ [ $(s).name ] ] ;
             }
             if $(m)
             {
@@ -424,8 +424,7 @@
             local name = [ $(s).name ] ;
             local ea = [ $(s).action ] ;
             local ep = [ $(ea).properties ] ;
- local a = [
- new non-scanning-action $(s) : symlink.ln : $(ep) ] ;
+ local a = [ new non-scanning-action $(s) : symlink.ln : $(ep) ] ;
 
             local noversion-file ;
             if $(nt)
@@ -451,16 +450,16 @@
     }
 
     generate stage-unversioned : stage-proper :
- <generating-rule>@make-unversioned-links ;
+ <generating-rule>@make-unversioned-links ;
     explicit stage-unversioned ;
 
     generate install-unversioned : install-proper :
- <generating-rule>@make-unversioned-links ;
+ <generating-rule>@make-unversioned-links ;
     explicit install-unversioned ;
 }
 else
 {
- # Create do-nothing aliases
+ # Create do-nothing aliases.
     alias stage-unversioned ;
     explicit stage-unversioned ;
     alias install-unversioned ;
@@ -473,23 +472,25 @@
 explicit stage ;
 
 
-# Just build the libraries, don't install them anywhere.
-# This is what happens with just "bjam --v2".
+# Just build the libraries, don't install them anywhere. This is what happens
+# with just "bjam --v2".
 alias build_all : libs/$(libraries)/build ;
 
-# This rule should be called from libraries' Jamfiles and will
-# create two targets, "install" and "stage", that will install
-# or stage that library. The --prefix option is respected, but
-# --with and --without options, naturally, are ignored.
+
+# This rule should be called from libraries' Jamfiles and will create two
+# targets, "install" and "stage", that will install or stage that library. The
+# --prefix option is respected, but --with and --without options, naturally, are
+# ignored.
 #
 # - libraries -- list of library targets to install.
+#
 rule boost-install ( libraries * )
 {
     package.install install
         : <dependency>/boost//install-headers $(install-requirements)
         : # No binaries
         : $(libraries)
- : # No headers, it's handled by the dependency
+ : # No headers, it is handled by the dependency.
     ;
 
     install stage : $(libraries) : <location>$(BOOST_STAGE_LOCATE) ;
@@ -503,6 +504,7 @@
     }
 }
 
+
 # Make project ids of all libraries known.
 for local l in $(all-libraries)
 {

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -28,11 +28,7 @@
 
 // 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
+ // is_classified functor
             struct is_classifiedF :
                 public predicate_facade<is_classifiedF>
             {
@@ -42,7 +38,6 @@
                 // Constructor from a locale
                 is_classifiedF(std::ctype_base::mask Type, std::locale const & Loc = std::locale()) :
                     m_Type(Type), m_Locale(Loc) {}
-
                 // Operation
                 template<typename CharT>
                 bool operator()( CharT Ch ) const
@@ -59,13 +54,10 @@
                 #endif
 
             private:
- const std::ctype_base::mask m_Type;
- const std::locale m_Locale;
+ std::ctype_base::mask m_Type;
+ std::locale m_Locale;
             };
 
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
-#pragma warning(pop)
-#endif
 
             // is_any_of functor
             /*
@@ -77,9 +69,7 @@
             {
             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;
+ typedef typename ::boost::remove_const<CharT>::type set_value_type;
 
             public:
                 // Boost.Lambda support
@@ -96,7 +86,7 @@
                     m_Size=Size;
                     set_value_type* Storage=0;
 
- if(m_Size<=FIXED_STORAGE_SIZE)
+ if(use_fixed_storage(m_Size))
                     {
                         // Use fixed storage
                         Storage=&m_Storage.m_fixSet[0];
@@ -121,7 +111,7 @@
                     const set_value_type* SrcStorage=0;
                     set_value_type* DestStorage=0;
 
- if(m_Size<=FIXED_STORAGE_SIZE)
+ if(use_fixed_storage(m_Size))
                     {
                         // Use fixed storage
                         DestStorage=&m_Storage.m_fixSet[0];
@@ -142,36 +132,80 @@
                 // Destructor
                 ~is_any_ofF()
                 {
- if(m_Size>FIXED_STORAGE_SIZE && m_Storage.m_dynSet!=0)
+ if(!use_fixed_storage(m_Size) && m_Storage.m_dynSet!=0)
                     {
- delete m_Storage.m_dynSet;
+ 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;
+ // Handle self assignment
+ if(this==&Other) return *this;
 
- if(m_Size<=FIXED_STORAGE_SIZE)
+ // Prepare storage
+ const set_value_type* SrcStorage;
+ set_value_type* DestStorage;
+
+ if(use_fixed_storage(Other.m_Size))
                     {
                         // Use fixed storage
                         DestStorage=&m_Storage.m_fixSet[0];
                         SrcStorage=&Other.m_Storage.m_fixSet[0];
+
+ // Delete old storage if was present
+ if(!use_fixed_storage(m_Size) && m_Storage.m_dynSet!=0)
+ {
+ delete [] m_Storage.m_dynSet;
+ }
+
+ // Set new size
+ m_Size=Other.m_Size;
                     }
                     else
                     {
- // Use dynamic storage
- m_Storage.m_dynSet=new set_value_type[m_Size];
- DestStorage=m_Storage.m_dynSet;
+ // Other uses dynamic storage
                         SrcStorage=Other.m_Storage.m_dynSet;
+
+ // Check what kind of storage are we using right now
+ if(use_fixed_storage(m_Size))
+ {
+ // Using fixed storage, allocate new
+ set_value_type* pTemp=new set_value_type[Other.m_Size];
+ DestStorage=pTemp;
+ m_Storage.m_dynSet=pTemp;
+ m_Size=Other.m_Size;
+ }
+ else
+ {
+ // Using dynamic storage, check if can reuse
+ if(m_Storage.m_dynSet!=0 && m_Size>=Other.m_Size && m_Size<Other.m_Size*2)
+ {
+ // Reuse the current storage
+ DestStorage=m_Storage.m_dynSet;
+ m_Size=Other.m_Size;
+ }
+ else
+ {
+ // Allocate the new one
+ set_value_type* pTemp=new set_value_type[Other.m_Size];
+ DestStorage=pTemp;
+
+ // Delete old storage if necessary
+ if(m_Storage.m_dynSet!=0)
+ {
+ delete [] m_Storage.m_dynSet;
+ }
+ // Store the new storage
+ m_Storage.m_dynSet=pTemp;
+ // Set new size
+ m_Size=Other.m_Size;
+ }
+ }
                     }
 
- // Use fixed storage
+ // Copy the data
                     ::memcpy(DestStorage, SrcStorage, sizeof(set_value_type)*m_Size);
 
                     return *this;
@@ -182,12 +216,19 @@
                 bool operator()( Char2T Ch ) const
                 {
                     const set_value_type* Storage=
- (m_Size<=FIXED_STORAGE_SIZE)
+ (use_fixed_storage(m_Size))
                         ? &m_Storage.m_fixSet[0]
                         : m_Storage.m_dynSet;
 
                     return ::std::binary_search(Storage, Storage+m_Size, Ch);
                 }
+ private:
+ // check if the size is eligible for fixed storage
+ static bool use_fixed_storage(std::size_t size)
+ {
+ return size<=sizeof(set_value_type*)*2;
+ }
+
 
             private:
                 // storage
@@ -195,7 +236,7 @@
                 union
                 {
                     set_value_type* m_dynSet;
- set_value_type m_fixSet[FIXED_STORAGE_SIZE];
+ set_value_type m_fixSet[sizeof(set_value_type*)*2];
                 }
                 m_Storage;
         

Modified: branches/proto/v4/boost/archive/basic_archive.hpp
==============================================================================
--- branches/proto/v4/boost/archive/basic_archive.hpp (original)
+++ branches/proto/v4/boost/archive/basic_archive.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -17,7 +17,7 @@
 // See http://www.boost.org for updates, documentation, and revision history.
 
 #include <boost/config.hpp>
-#include <boost/strong_typedef.hpp>
+#include <boost/serialization/strong_typedef.hpp>
 #include <boost/noncopyable.hpp>
 
 #include <boost/archive/detail/auto_link_archive.hpp>
@@ -93,10 +93,10 @@
 #define NULL_POINTER_TAG class_id_type(-1)
 
 BOOST_ARCHIVE_DECL(const char *)
-ARCHIVE_SIGNATURE();
+BOOST_ARCHIVE_SIGNATURE();
 
 BOOST_ARCHIVE_DECL(unsigned char)
-ARCHIVE_VERSION();
+BOOST_ARCHIVE_VERSION();
 
 }// namespace archive
 }// namespace boost

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -25,7 +25,7 @@
 
 #include <boost/config.hpp>
 #include <boost/detail/workaround.hpp>
-#include <boost/pfto.hpp>
+#include <boost/serialization/pfto.hpp>
 
 #include <boost/archive/detail/common_iarchive.hpp>
 #include <boost/serialization/collection_size_type.hpp>

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -45,7 +45,7 @@
 
 #include <boost/cstdint.hpp>
 #include <boost/scoped_ptr.hpp>
-#include <boost/throw_exception.hpp>
+#include <boost/serialization/throw_exception.hpp>
 //#include <boost/limits.hpp>
 //#include <boost/io/ios_state.hpp>
 
@@ -151,18 +151,20 @@
         s
     );
     if(scount != static_cast<std::streamsize>(s))
- boost::throw_exception(
+ boost::serialization::throw_exception(
             archive_exception(archive_exception::stream_error)
         );
     // note: an optimizer should eliminate the following for char files
     s = count % sizeof(Elem);
     if(0 < s){
 // if(is.fail())
-// boost::throw_exception(archive_exception(archive_exception::stream_error));
+// boost::serialization::throw_exception(
+// archive_exception(archive_exception::stream_error)
+// );
         Elem t;
         scount = m_sb.sgetn(& t, 1);
         if(scount != 1)
- boost::throw_exception(
+ boost::serialization::throw_exception(
                 archive_exception(archive_exception::stream_error)
             );
         std::memcpy(static_cast<char*>(address) + (count - s), &t, s);

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -24,7 +24,7 @@
 // ON PLATFORM APART FROM THE ONE THEY ARE CREATE ON
 
 #include <boost/config.hpp>
-#include <boost/pfto.hpp>
+#include <boost/serialization/pfto.hpp>
 
 #include <boost/detail/workaround.hpp>
 #include <boost/archive/detail/common_oarchive.hpp>

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -41,7 +41,7 @@
 //#include <boost/limits.hpp>
 //#include <boost/io/ios_state.hpp>
 #include <boost/scoped_ptr.hpp>
-#include <boost/throw_exception.hpp>
+#include <boost/serialization/throw_exception.hpp>
 
 #include <boost/archive/basic_streambuf_locale_saver.hpp>
 #include <boost/archive/archive_exception.hpp>
@@ -148,7 +148,9 @@
     // mode where by cr characters recieve special treatment.
     // be sure that the output stream is opened with ios::binary
     //if(os.fail())
- // boost::throw_exception(archive_exception(archive_exception::stream_error));
+ // boost::serialization::throw_exception(
+ // archive_exception(archive_exception::stream_error)
+ // );
     // figure number of elements to output - round up
     count = ( count + sizeof(Elem) - 1)
         / sizeof(Elem);
@@ -157,7 +159,9 @@
         count
     );
     if(count != static_cast<std::size_t>(scount))
- boost::throw_exception(archive_exception(archive_exception::stream_error));
+ boost::serialization::throw_exception(
+ archive_exception(archive_exception::stream_error)
+ );
     //os.write(
     // static_cast<const BOOST_DEDUCED_TYPENAME OStream::char_type *>(address),
     // count

Modified: branches/proto/v4/boost/archive/basic_text_iarchive.hpp
==============================================================================
--- branches/proto/v4/boost/archive/basic_text_iarchive.hpp (original)
+++ branches/proto/v4/boost/archive/basic_text_iarchive.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -25,7 +25,7 @@
 // use two template parameters
 
 #include <boost/config.hpp>
-#include <boost/pfto.hpp>
+#include <boost/serialization/pfto.hpp>
 #include <boost/detail/workaround.hpp>
 
 #include <boost/archive/detail/common_iarchive.hpp>

Modified: branches/proto/v4/boost/archive/basic_text_iprimitive.hpp
==============================================================================
--- branches/proto/v4/boost/archive/basic_text_iprimitive.hpp (original)
+++ branches/proto/v4/boost/archive/basic_text_iprimitive.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -43,7 +43,7 @@
 #include <boost/archive/dinkumware.hpp>
 #endif
 
-#include <boost/throw_exception.hpp>
+#include <boost/serialization/throw_exception.hpp>
 #include <boost/limits.hpp>
 #include <boost/io/ios_state.hpp>
 #include <boost/scoped_ptr.hpp>
@@ -80,13 +80,17 @@
     void load(T & t)
     {
         if(is.fail())
- boost::throw_exception(archive_exception(archive_exception::stream_error));
+ boost::serialization::throw_exception(
+ archive_exception(archive_exception::stream_error)
+ );
         is >> t;
     }
     void load(unsigned char & t)
     {
         if(is.fail())
- boost::throw_exception(archive_exception(archive_exception::stream_error));
+ boost::serialization::throw_exception(
+ archive_exception(archive_exception::stream_error)
+ );
         unsigned short int i;
         is >> i;
         t = static_cast<unsigned char>(i);
@@ -94,7 +98,9 @@
     void load(signed char & t)
     {
         if(is.fail())
- boost::throw_exception(archive_exception(archive_exception::stream_error));
+ boost::serialization::throw_exception(
+ archive_exception(archive_exception::stream_error)
+ );
         signed short int i;
         is >> i;
         t = static_cast<signed char>(i);
@@ -102,7 +108,9 @@
     void load(char & t)
     {
         if(is.fail())
- boost::throw_exception(archive_exception(archive_exception::stream_error));
+ boost::serialization::throw_exception(
+ archive_exception(archive_exception::stream_error)
+ );
         short int i;
         is >> i;
         t = static_cast<char>(i);
@@ -111,7 +119,9 @@
     void load(wchar_t & t)
     {
         if(is.fail())
- boost::throw_exception(archive_exception(archive_exception::stream_error));
+ boost::serialization::throw_exception(
+ archive_exception(archive_exception::stream_error)
+ );
         unsigned i;
         is >> i;
         t = static_cast<wchar_t>(i);

Modified: branches/proto/v4/boost/archive/basic_text_oarchive.hpp
==============================================================================
--- branches/proto/v4/boost/archive/basic_text_oarchive.hpp (original)
+++ branches/proto/v4/boost/archive/basic_text_oarchive.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -26,7 +26,7 @@
 
 #include <cassert>
 #include <boost/config.hpp>
-#include <boost/pfto.hpp>
+#include <boost/serialization/pfto.hpp>
 #include <boost/detail/workaround.hpp>
 
 #include <boost/archive/detail/common_oarchive.hpp>

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -48,7 +48,7 @@
 #include <boost/limits.hpp>
 #include <boost/io/ios_state.hpp>
 #include <boost/scoped_ptr.hpp>
-#include <boost/throw_exception.hpp>
+#include <boost/serialization/throw_exception.hpp>
 #include <boost/archive/archive_exception.hpp>
 
 #include <boost/archive/detail/abi_prefix.hpp> // must be the last header
@@ -83,7 +83,9 @@
     template<class T>
     void save(const T &t){
         if(os.fail())
- boost::throw_exception(archive_exception(archive_exception::stream_error));
+ boost::serialization::throw_exception(
+ archive_exception(archive_exception::stream_error)
+ );
         os << t;
     }
 
@@ -94,32 +96,42 @@
         // otherwise crash on load.
         assert(0 == static_cast<int>(t) || 1 == static_cast<int>(t));
         if(os.fail())
- boost::throw_exception(archive_exception(archive_exception::stream_error));
+ boost::serialization::throw_exception(
+ archive_exception(archive_exception::stream_error)
+ );
         os << t;
     }
     void save(const signed char t)
     {
         if(os.fail())
- boost::throw_exception(archive_exception(archive_exception::stream_error));
+ boost::serialization::throw_exception(
+ archive_exception(archive_exception::stream_error)
+ );
         os << static_cast<short int>(t);
     }
     void save(const unsigned char t)
     {
         if(os.fail())
- boost::throw_exception(archive_exception(archive_exception::stream_error));
+ boost::serialization::throw_exception(
+ archive_exception(archive_exception::stream_error)
+ );
         os << static_cast<short unsigned int>(t);
     }
     void save(const char t)
     {
         if(os.fail())
- boost::throw_exception(archive_exception(archive_exception::stream_error));
+ boost::serialization::throw_exception(
+ archive_exception(archive_exception::stream_error)
+ );
         os << static_cast<short int>(t);
     }
     #ifndef BOOST_NO_INTRINSIC_WCHAR_T
     void save(const wchar_t t)
     {
         if(os.fail())
- boost::throw_exception(archive_exception(archive_exception::stream_error));
+ boost::serialization::throw_exception(
+ archive_exception(archive_exception::stream_error)
+ );
         os << static_cast<int>(t);
     }
     #endif
@@ -127,7 +139,9 @@
     {
         // must be a user mistake - can't serialize un-initialized data
         if(os.fail())
- boost::throw_exception(archive_exception(archive_exception::stream_error));
+ boost::serialization::throw_exception(
+ archive_exception(archive_exception::stream_error)
+ );
         os << std::setprecision(std::numeric_limits<float>::digits10 + 2);
         os << t;
     }
@@ -135,7 +149,9 @@
     {
         // must be a user mistake - can't serialize un-initialized data
         if(os.fail())
- boost::throw_exception(archive_exception(archive_exception::stream_error));
+ boost::serialization::throw_exception(
+ archive_exception(archive_exception::stream_error)
+ );
         os << std::setprecision(std::numeric_limits<double>::digits10 + 2);
         os << t;
     }
@@ -147,13 +163,17 @@
     // unformatted append of one character
     void put(int c){
         if(os.fail())
- boost::throw_exception(archive_exception(archive_exception::stream_error));
+ boost::serialization::throw_exception(
+ archive_exception(archive_exception::stream_error)
+ );
         os.put(c);
     }
     // unformatted append of null terminated string
     void put(const char * s){
         if(os.fail())
- boost::throw_exception(archive_exception(archive_exception::stream_error));
+ boost::serialization::throw_exception(
+ archive_exception(archive_exception::stream_error)
+ );
         while('\0' != *s)
             os.put(*s++);
     }

Modified: branches/proto/v4/boost/archive/basic_xml_archive.hpp
==============================================================================
--- branches/proto/v4/boost/archive/basic_xml_archive.hpp (original)
+++ branches/proto/v4/boost/archive/basic_xml_archive.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -28,35 +28,35 @@
 
 extern
 BOOST_ARCHIVE_DECL(const char *)
-OBJECT_ID();
+BOOST_ARCHIVE_XML_OBJECT_ID();
 
 extern
 BOOST_ARCHIVE_DECL(const char *)
-OBJECT_REFERENCE();
+BOOST_ARCHIVE_XML_OBJECT_REFERENCE();
 
 extern
 BOOST_ARCHIVE_DECL(const char *)
-CLASS_ID();
+BOOST_ARCHIVE_XML_CLASS_ID();
 
 extern
 BOOST_ARCHIVE_DECL(const char *)
-CLASS_ID_REFERENCE();
+BOOST_ARCHIVE_XML_CLASS_ID_REFERENCE();
 
 extern
 BOOST_ARCHIVE_DECL(const char *)
-CLASS_NAME();
+BOOST_ARCHIVE_XML_CLASS_NAME();
 
 extern
 BOOST_ARCHIVE_DECL(const char *)
-TRACKING();
+BOOST_ARCHIVE_XML_TRACKING();
 
 extern
 BOOST_ARCHIVE_DECL(const char *)
-VERSION();
+BOOST_ARCHIVE_XML_VERSION();
 
 extern
 BOOST_ARCHIVE_DECL(const char *)
-SIGNATURE();
+BOOST_ARCHIVE_XML_SIGNATURE();
 
 }// namespace archive
 }// namespace boost

Modified: branches/proto/v4/boost/archive/basic_xml_iarchive.hpp
==============================================================================
--- branches/proto/v4/boost/archive/basic_xml_iarchive.hpp (original)
+++ branches/proto/v4/boost/archive/basic_xml_iarchive.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -17,7 +17,7 @@
 // See http://www.boost.org for updates, documentation, and revision history.
 
 #include <boost/config.hpp>
-#include <boost/pfto.hpp>
+#include <boost/serialization/pfto.hpp>
 #include <boost/detail/workaround.hpp>
 
 #include <boost/archive/detail/common_iarchive.hpp>

Modified: branches/proto/v4/boost/archive/binary_iarchive_impl.hpp
==============================================================================
--- branches/proto/v4/boost/archive/binary_iarchive_impl.hpp (original)
+++ branches/proto/v4/boost/archive/binary_iarchive_impl.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -17,7 +17,7 @@
 // See http://www.boost.org for updates, documentation, and revision history.
 
 #include <istream>
-#include <boost/pfto.hpp>
+#include <boost/serialization/pfto.hpp>
 #include <boost/archive/basic_binary_iprimitive.hpp>
 #include <boost/archive/basic_binary_iarchive.hpp>
 

Modified: branches/proto/v4/boost/archive/binary_oarchive_impl.hpp
==============================================================================
--- branches/proto/v4/boost/archive/binary_oarchive_impl.hpp (original)
+++ branches/proto/v4/boost/archive/binary_oarchive_impl.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -17,7 +17,7 @@
 // See http://www.boost.org for updates, documentation, and revision history.
 
 #include <ostream>
-#include <boost/pfto.hpp>
+#include <boost/serialization/pfto.hpp>
 #include <boost/archive/basic_binary_oprimitive.hpp>
 #include <boost/archive/basic_binary_oarchive.hpp>
 

Modified: branches/proto/v4/boost/archive/detail/common_iarchive.hpp
==============================================================================
--- branches/proto/v4/boost/archive/detail/common_iarchive.hpp (original)
+++ branches/proto/v4/boost/archive/detail/common_iarchive.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -20,7 +20,7 @@
 #include <boost/archive/detail/interface_iarchive.hpp>
 #include <boost/archive/detail/iserializer.hpp>
 #include <boost/archive/detail/register_archive.hpp>
-#include <boost/pfto.hpp>
+#include <boost/serialization/pfto.hpp>
 
 namespace boost {
 namespace archive {

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -33,10 +33,10 @@
     using ::size_t;
 } // namespace std
 #endif
-#include <boost/throw_exception.hpp>
-#include <boost/smart_cast.hpp>
+#include <boost/serialization/throw_exception.hpp>
+#include <boost/serialization/smart_cast.hpp>
 #include <boost/static_assert.hpp>
-#include <boost/static_warning.hpp>
+#include <boost/serialization/static_warning.hpp>
 #include <boost/detail/no_exceptions_support.hpp>
 
 #include <boost/type_traits/is_pointer.hpp>
@@ -150,7 +150,7 @@
     // make sure call is routed through the higest interface that might
     // be specialized by the user.
     boost::serialization::serialize_adl(
- boost::smart_cast_reference<Archive &>(ar),
+ boost::serialization::smart_cast_reference<Archive &>(ar),
         * static_cast<T *>(x),
         file_version
     );
@@ -252,11 +252,12 @@
     const unsigned int file_version
 ) const
 {
- Archive & ar_impl = boost::smart_cast_reference<Archive &>(ar);
+ Archive & ar_impl =
+ boost::serialization::smart_cast_reference<Archive &>(ar);
 
     auto_ptr_with_deleter<T> ap(heap_allocator<T>::invoke());
     if(NULL == ap.get())
- boost::throw_exception(std::bad_alloc()) ;
+ boost::serialization::throw_exception(std::bad_alloc()) ;
 
     T * t = ap.get();
     x = t;
@@ -480,7 +481,7 @@
         int count;
         ar >> BOOST_SERIALIZATION_NVP(count);
         if(count > current_count)
- boost::throw_exception(archive::archive_exception(
+ boost::serialization::throw_exception(archive::archive_exception(
                 boost::archive::archive_exception::array_size_too_short
             ));
         ar >> serialization::make_array(static_cast<value_type*>(&t[0]),count);

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -27,10 +27,10 @@
 
 #include <boost/config.hpp>
 #include <boost/detail/workaround.hpp>
-#include <boost/throw_exception.hpp>
-#include <boost/smart_cast.hpp>
+#include <boost/serialization/throw_exception.hpp>
+#include <boost/serialization/smart_cast.hpp>
 #include <boost/static_assert.hpp>
-#include <boost/static_warning.hpp>
+#include <boost/serialization/static_warning.hpp>
 
 #include <boost/type_traits/is_pointer.hpp>
 #include <boost/type_traits/is_enum.hpp>
@@ -142,7 +142,7 @@
     // be specialized by the user.
     BOOST_STATIC_ASSERT(boost::is_const<T>::value == false);
     boost::serialization::serialize_adl(
- boost::smart_cast_reference<Archive &>(ar),
+ boost::serialization::smart_cast_reference<Archive &>(ar),
         * static_cast<T *>(const_cast<void *>(x)),
         version()
     );
@@ -180,7 +180,8 @@
     // be specialized by the user.
     T * t = static_cast<T *>(const_cast<void *>(x));
     const unsigned int file_version = boost::serialization::version<T>::value;
- Archive & ar_impl = boost::smart_cast_reference<Archive &>(ar);
+ Archive & ar_impl
+ = boost::serialization::smart_cast_reference<Archive &>(ar);
     boost::serialization::save_construct_data_adl<Archive, T>(
         ar_impl,
         t,
@@ -369,7 +370,7 @@
             // note:if this exception is thrown, be sure that derived pointer
             // is either registered or exported.
             if(NULL == true_type){
- boost::throw_exception(
+ boost::serialization::throw_exception(
                     archive_exception(archive_exception::unregistered_class)
                 );
             }
@@ -389,7 +390,7 @@
                 static_cast<const void *>(&t)
             );
             if(NULL == vp){
- boost::throw_exception(
+ boost::serialization::throw_exception(
                     archive_exception(archive_exception::unregistered_cast)
                 );
             }
@@ -401,7 +402,7 @@
                 = archive_pointer_oserializer<Archive>::find(* true_type);
             assert(NULL != bpos);
             if(NULL == bpos)
- boost::throw_exception(
+ boost::serialization::throw_exception(
                     archive_exception(archive_exception::unregistered_class)
                 );
             ar.save_pointer(vp, bpos);
@@ -447,7 +448,8 @@
         #endif
         register_type(ar, * t);
         if(NULL == t){
- basic_oarchive & boa = boost::smart_cast_reference<basic_oarchive &>(ar);
+ basic_oarchive & boa
+ = boost::serialization::smart_cast_reference<basic_oarchive &>(ar);
             boa.save_null_pointer();
             save_access::end_preamble(ar);
             return;

Modified: branches/proto/v4/boost/archive/impl/basic_binary_iarchive.ipp
==============================================================================
--- branches/proto/v4/boost/archive/impl/basic_binary_iarchive.ipp (original)
+++ branches/proto/v4/boost/archive/impl/basic_binary_iarchive.ipp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -35,7 +35,7 @@
     cn.reserve(BOOST_SERIALIZATION_MAX_KEY_SIZE);
     load_override(cn, 0);
     if(cn.size() > (BOOST_SERIALIZATION_MAX_KEY_SIZE - 1))
- boost::throw_exception(
+ boost::serialization::throw_exception(
             archive_exception(archive_exception::invalid_class_name)
         );
     std::memcpy(t, cn.data(), cn.size());
@@ -49,8 +49,8 @@
     // read signature in an archive version independent manner
     std::string file_signature;
     * this->This() >> file_signature;
- if(file_signature != ARCHIVE_SIGNATURE())
- boost::throw_exception(
+ if(file_signature != BOOST_ARCHIVE_SIGNATURE())
+ boost::serialization::throw_exception(
             archive_exception(archive_exception::invalid_signature)
         );
 
@@ -69,8 +69,8 @@
     #endif
     
     // extra little .t is to get around borland quirk
- if(ARCHIVE_VERSION() < input_library_version.t)
- boost::throw_exception(
+ if(BOOST_ARCHIVE_VERSION() < input_library_version.t)
+ boost::serialization::throw_exception(
             archive_exception(archive_exception::unsupported_version)
         );
 }

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -22,7 +22,7 @@
 
 #include <boost/detail/workaround.hpp> // fixup for RogueWave
 
-#include <boost/throw_exception.hpp>
+#include <boost/serialization/throw_exception.hpp>
 #include <boost/scoped_ptr.hpp>
 
 #include <boost/archive/archive_exception.hpp>
@@ -45,22 +45,22 @@
     unsigned char size;
     this->This()->load(size);
     if(sizeof(int) != size)
- boost::throw_exception(
+ boost::serialization::throw_exception(
             archive_exception(archive_exception::incompatible_native_format)
         );
     this->This()->load(size);
     if(sizeof(long) != size)
- boost::throw_exception(
+ boost::serialization::throw_exception(
             archive_exception(archive_exception::incompatible_native_format)
         );
     this->This()->load(size);
     if(sizeof(float) != size)
- boost::throw_exception(
+ boost::serialization::throw_exception(
             archive_exception(archive_exception::incompatible_native_format)
         );
     this->This()->load(size);
     if(sizeof(double) != size)
- boost::throw_exception(
+ boost::serialization::throw_exception(
             archive_exception(archive_exception::incompatible_native_format)
         );
 
@@ -68,7 +68,7 @@
     int i;
     this->This()->load(i);
     if(1 != i)
- boost::throw_exception(
+ boost::serialization::throw_exception(
             archive_exception(archive_exception::incompatible_native_format)
         );
 }
@@ -186,7 +186,7 @@
         m_sb
     ).sync();
     if(0 != result){
- boost::throw_exception(
+ boost::serialization::throw_exception(
             archive_exception(archive_exception::stream_error)
         );
     }

Modified: branches/proto/v4/boost/archive/impl/basic_binary_oarchive.ipp
==============================================================================
--- branches/proto/v4/boost/archive/impl/basic_binary_oarchive.ipp (original)
+++ branches/proto/v4/boost/archive/impl/basic_binary_oarchive.ipp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -35,10 +35,10 @@
 #endif
 basic_binary_oarchive<Archive>::init(){
     // write signature in an archive version independent manner
- const std::string file_signature(ARCHIVE_SIGNATURE());
+ const std::string file_signature(BOOST_ARCHIVE_SIGNATURE());
     * this->This() << file_signature;
     // write library version
- const version_type v(ARCHIVE_VERSION());
+ const version_type v(BOOST_ARCHIVE_VERSION());
     * this->This() << v;
 }
 

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -30,7 +30,7 @@
 
 #include <boost/detail/workaround.hpp>
 
-#include <boost/throw_exception.hpp>
+#include <boost/serialization/throw_exception.hpp>
 #include <boost/scoped_ptr.hpp>
 #include <boost/archive/archive_exception.hpp>
 #include <boost/archive/add_facet.hpp>
@@ -156,7 +156,7 @@
         m_sb
     ).sync();
     if(0 != result){
- boost::throw_exception(
+ boost::serialization::throw_exception(
             archive_exception(archive_exception::stream_error)
         );
     }

Modified: branches/proto/v4/boost/archive/impl/basic_text_iarchive.ipp
==============================================================================
--- branches/proto/v4/boost/archive/impl/basic_text_iarchive.ipp (original)
+++ branches/proto/v4/boost/archive/impl/basic_text_iarchive.ipp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -35,7 +35,7 @@
     cn.reserve(BOOST_SERIALIZATION_MAX_KEY_SIZE);
     load_override(cn, 0);
     if(cn.size() > (BOOST_SERIALIZATION_MAX_KEY_SIZE - 1))
- boost::throw_exception(
+ boost::serialization::throw_exception(
             archive_exception(archive_exception::invalid_class_name)
         );
     std::memcpy(t, cn.data(), cn.size());
@@ -49,8 +49,8 @@
     // read signature in an archive version independent manner
     std::string file_signature;
     * this->This() >> file_signature;
- if(file_signature != ARCHIVE_SIGNATURE())
- boost::throw_exception(
+ if(file_signature != BOOST_ARCHIVE_SIGNATURE())
+ boost::serialization::throw_exception(
             archive_exception(archive_exception::invalid_signature)
         );
 
@@ -69,8 +69,8 @@
     #endif
 
     // extra little .t is to get around borland quirk
- if(ARCHIVE_VERSION() < input_library_version.t)
- boost::throw_exception(
+ if(BOOST_ARCHIVE_VERSION() < input_library_version.t)
+ boost::serialization::throw_exception(
             archive_exception(archive_exception::unsupported_version)
         );
 }

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -18,8 +18,8 @@
 } // namespace std
 #endif
 
-#include <boost/throw_exception.hpp>
-#include <boost/pfto.hpp>
+#include <boost/serialization/throw_exception.hpp>
+#include <boost/serialization/pfto.hpp>
 
 #include <boost/archive/basic_text_iprimitive.hpp>
 #include <boost/archive/codecvt_null.hpp>
@@ -52,7 +52,9 @@
     );
         
     if(is.fail())
- boost::throw_exception(archive_exception(archive_exception::stream_error));
+ boost::serialization::throw_exception(
+ archive_exception(archive_exception::stream_error)
+ );
     // convert from base64 to binary
     typedef BOOST_DEDUCED_TYPENAME
         iterators::transform_width<

Modified: branches/proto/v4/boost/archive/impl/basic_text_oarchive.ipp
==============================================================================
--- branches/proto/v4/boost/archive/impl/basic_text_oarchive.ipp (original)
+++ branches/proto/v4/boost/archive/impl/basic_text_oarchive.ipp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -51,10 +51,10 @@
 BOOST_ARCHIVE_OR_WARCHIVE_DECL(void)
 basic_text_oarchive<Archive>::init(){
     // write signature in an archive version independent manner
- const std::string file_signature(ARCHIVE_SIGNATURE());
+ const std::string file_signature(BOOST_ARCHIVE_SIGNATURE());
     * this->This() << file_signature;
     // write library version
- const version_type v(ARCHIVE_VERSION());
+ const version_type v(BOOST_ARCHIVE_VERSION());
     * this->This() << v;
 }
 

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -9,7 +9,7 @@
 // See http://www.boost.org for updates, documentation, and revision history.
 
 #include <cstddef> // NULL
-#include <boost/pfto.hpp>
+#include <boost/serialization/pfto.hpp>
 
 #include <boost/archive/basic_text_oprimitive.hpp>
 #include <boost/archive/codecvt_null.hpp>
@@ -36,7 +36,9 @@
         return;
     
     if(os.fail())
- boost::throw_exception(archive_exception(archive_exception::stream_error));
+ boost::serialization::throw_exception(
+ archive_exception(archive_exception::stream_error)
+ );
         
     os.put('\n');
     

Modified: branches/proto/v4/boost/archive/impl/basic_xml_grammar.hpp
==============================================================================
--- branches/proto/v4/boost/archive/impl/basic_xml_grammar.hpp (original)
+++ branches/proto/v4/boost/archive/impl/basic_xml_grammar.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -56,9 +56,7 @@
 #endif
 
 //#define BOOST_SPIRIT_DEBUG
-//#include <boost/spirit/core.hpp>
 #include <boost/spirit/core/non_terminal/rule.hpp>
-#include <boost/spirit/core/non_terminal/grammar.hpp>
 
 // the following hack is to evade a bogus error generated by using the
 // word "arg" when bind.hpp has been included
@@ -83,8 +81,7 @@
 // XML grammar parsing
 
 template<class CharType>
-class basic_xml_grammar : public boost::spirit::grammar<basic_xml_grammar<CharType> >
-{
+class basic_xml_grammar {
 public:
     // The following is not necessary according to DR45, but at least
     // one compiler (Compaq C++ 6.5 in strict_ansi mode) chokes otherwise.
@@ -161,7 +158,7 @@
         IStream & is,
         const rule_t &rule_,
         const CharType delimiter = L'>'
- );
+ ) const ;
 public:
     struct return_values {
         StringType object_name;
@@ -176,15 +173,14 @@
             tracking_level(false)
         {}
     } rv;
- bool parse_start_tag(IStream & is) ;
- bool parse_end_tag(IStream & is);
- bool parse_string(IStream & is, StringType & s);
+ bool parse_start_tag(IStream & is) /*const*/;
+ bool parse_end_tag(IStream & is) const;
+ bool parse_string(IStream & is, StringType & s) /*const*/;
     void init(IStream & is);
     void windup(IStream & is);
     basic_xml_grammar();
 };
 
-
 } // namespace archive
 } // namespace boost
 

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -12,7 +12,7 @@
 #include <cstddef> // NULL
 #include <algorithm>
 
-#include <boost/throw_exception.hpp>
+#include <boost/serialization/throw_exception.hpp>
 
 #include <boost/archive/basic_xml_iarchive.hpp>
 #include <boost/serialization/tracking.hpp>
@@ -31,7 +31,7 @@
         return;
     bool result = this->This()->gimpl->parse_start_tag(this->This()->get_is());
     if(true != result){
- boost::throw_exception(
+ boost::serialization::throw_exception(
             archive_exception(archive_exception::stream_error)
         );
     }
@@ -48,7 +48,7 @@
         return;
     bool result = this->This()->gimpl->parse_end_tag(this->This()->get_is());
     if(true != result){
- boost::throw_exception(
+ boost::serialization::throw_exception(
             archive_exception(archive_exception::stream_error)
         );
     }
@@ -66,7 +66,7 @@
                 name
             )
         ){
- boost::throw_exception(
+ boost::serialization::throw_exception(
                 archive_exception(archive_exception::stream_error)
             );
         }

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -44,7 +44,7 @@
         if((unsigned)t > 127)
             return;
         if(0 == lookup_table[(unsigned)t])
- boost::throw_exception(
+ boost::serialization::throw_exception(
                 xml_archive_exception(
                     xml_archive_exception::xml_archive_tag_name_error
                 )
@@ -152,7 +152,7 @@
 basic_xml_oarchive<Archive>::save_override(const object_id_type & t, int)
 {
     int i = t.t; // extra .t is for borland
- write_attribute(OBJECT_ID(), i, "=\"_");
+ write_attribute(BOOST_ARCHIVE_XML_OBJECT_ID(), i, "=\"_");
 }
 template<class Archive>
 BOOST_ARCHIVE_OR_WARCHIVE_DECL(void)
@@ -161,14 +161,14 @@
     int
 ){
     int i = t.t; // extra .t is for borland
- write_attribute(OBJECT_REFERENCE(), i, "=\"_");
+ write_attribute(BOOST_ARCHIVE_XML_OBJECT_REFERENCE(), i, "=\"_");
 }
 template<class Archive>
 BOOST_ARCHIVE_OR_WARCHIVE_DECL(void)
 basic_xml_oarchive<Archive>::save_override(const version_type & t, int)
 {
     int i = t.t; // extra .t is for borland
- write_attribute(VERSION(), i);
+ write_attribute(VBOOST_ARCHIVE_XML_ERSION(), i);
 }
 #endif
 
@@ -178,7 +178,7 @@
 {
     // borland doesn't do conversion of STRONG_TYPEDEFs very well
     const unsigned int i = t;
- write_attribute(OBJECT_ID(), i, "=\"_");
+ write_attribute(BOOST_ARCHIVE_XML_OBJECT_ID(), i, "=\"_");
 }
 template<class Archive>
 BOOST_ARCHIVE_OR_WARCHIVE_DECL(void)
@@ -187,21 +187,21 @@
     int
 ){
     const unsigned int i = t;
- write_attribute(OBJECT_REFERENCE(), i, "=\"_");
+ write_attribute(BOOST_ARCHIVE_XML_OBJECT_REFERENCE(), i, "=\"_");
 }
 template<class Archive>
 BOOST_ARCHIVE_OR_WARCHIVE_DECL(void)
 basic_xml_oarchive<Archive>::save_override(const version_type & t, int)
 {
     const unsigned int i = t;
- write_attribute(VERSION(), i);
+ write_attribute(BOOST_ARCHIVE_XML_VERSION(), i);
 }
 
 template<class Archive>
 BOOST_ARCHIVE_OR_WARCHIVE_DECL(void)
 basic_xml_oarchive<Archive>::save_override(const class_id_type & t, int)
 {
- write_attribute(CLASS_ID(), t);
+ write_attribute(BOOST_ARCHIVE_XML_CLASS_ID(), t);
 }
 template<class Archive>
 BOOST_ARCHIVE_OR_WARCHIVE_DECL(void)
@@ -209,7 +209,7 @@
     const class_id_reference_type & t,
     int
 ){
- write_attribute(CLASS_ID_REFERENCE(), t);
+ write_attribute(BOOST_ARCHIVE_XML_CLASS_ID_REFERENCE(), t);
 }
 template<class Archive>
 BOOST_ARCHIVE_OR_WARCHIVE_DECL(void)
@@ -217,7 +217,7 @@
     const class_id_optional_type & t,
     int
 ){
- write_attribute(CLASS_ID(), t);
+ write_attribute(BOOST_ARCHIVE_XML_CLASS_ID(), t);
 }
 template<class Archive>
 BOOST_ARCHIVE_OR_WARCHIVE_DECL(void)
@@ -226,14 +226,14 @@
     const char * key = t;
     if(NULL == key)
         return;
- write_attribute(CLASS_NAME(), key);
+ write_attribute(BOOST_ARCHIVE_XML_CLASS_NAME(), key);
 }
 
 template<class Archive>
 BOOST_ARCHIVE_OR_WARCHIVE_DECL(void)
 basic_xml_oarchive<Archive>::save_override(const tracking_type & t, int)
 {
- write_attribute(TRACKING(), t.t);
+ write_attribute(BOOST_ARCHIVE_XML_TRACKING(), t.t);
 }
 
 template<class Archive>
@@ -244,8 +244,8 @@
     this->This()->put("<!DOCTYPE boost_serialization>\n");
     // xml document wrapper - outer root
     this->This()->put("<boost_serialization");
- write_attribute("signature", ARCHIVE_SIGNATURE());
- write_attribute("version", ARCHIVE_VERSION());
+ write_attribute("signature", BOOST_ARCHIVE_SIGNATURE());
+ write_attribute("version", BOOST_ARCHIVE_VERSION());
     this->This()->put(">\n");
 }
 

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -56,7 +56,7 @@
     std::string s;
     bool result = gimpl->parse_string(is, s);
     if(! result)
- boost::throw_exception(
+ boost::serialization::throw_exception(
             xml_archive_exception(xml_archive_exception::xml_archive_parsing_error)
         );
     
@@ -74,7 +74,7 @@
             ws += wc;
             continue;
         }
- boost::throw_exception(
+ boost::serialization::throw_exception(
             iterators::dataflow_exception(
                 iterators::dataflow_exception::invalid_conversion
             )
@@ -90,7 +90,7 @@
     std::string s;
     bool result = gimpl->parse_string(is, s);
     if(! result)
- boost::throw_exception(
+ boost::serialization::throw_exception(
             xml_archive_exception(xml_archive_exception::xml_archive_parsing_error)
         );
         
@@ -104,7 +104,7 @@
             *ws++ = wc;
             continue;
         }
- boost::throw_exception(
+ boost::serialization::throw_exception(
             iterators::dataflow_exception(
                 iterators::dataflow_exception::invalid_conversion
             )
@@ -121,7 +121,7 @@
 xml_iarchive_impl<Archive>::load(std::string &s){
     bool result = gimpl->parse_string(is, s);
     if(! result)
- boost::throw_exception(
+ boost::serialization::throw_exception(
             xml_archive_exception(xml_archive_exception::xml_archive_parsing_error)
         );
 }
@@ -132,7 +132,7 @@
     std::string tstring;
     bool result = gimpl->parse_string(is, tstring);
     if(! result)
- boost::throw_exception(
+ boost::serialization::throw_exception(
             xml_archive_exception(xml_archive_exception::xml_archive_parsing_error)
         );
     std::memcpy(s, tstring.data(), tstring.size());
@@ -144,7 +144,7 @@
 xml_iarchive_impl<Archive>::load_override(class_name_type & t, int){
     const std::string & s = gimpl->rv.class_name;
     if(s.size() > BOOST_SERIALIZATION_MAX_KEY_SIZE - 1)
- boost::throw_exception(
+ boost::serialization::throw_exception(
             archive_exception(archive_exception::invalid_class_name)
        );
     char * tptr = t;

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -30,7 +30,7 @@
 
 #include <boost/io/ios_state.hpp>
 #include <boost/detail/no_exceptions_support.hpp>
-#include <boost/pfto.hpp>
+#include <boost/serialization/pfto.hpp>
 
 #include <boost/serialization/string.hpp>
 #include <boost/archive/add_facet.hpp>
@@ -73,7 +73,7 @@
     std::wstring ws;
     bool result = gimpl->parse_string(is, ws);
     if(! result)
- boost::throw_exception(
+ boost::serialization::throw_exception(
             xml_archive_exception(xml_archive_exception::xml_archive_parsing_error)
         );
     #if BOOST_WORKAROUND(_RWSTD_VER, BOOST_TESTED_AT(20101))
@@ -98,7 +98,7 @@
 xml_wiarchive_impl<Archive>::load(std::wstring & ws){
     bool result = gimpl->parse_string(is, ws);
     if(! result)
- boost::throw_exception(
+ boost::serialization::throw_exception(
             xml_archive_exception(xml_archive_exception::xml_archive_parsing_error)
         );
 }
@@ -110,7 +110,7 @@
     std::wstring ws;
     bool result = gimpl->parse_string(is, ws);
     if(! result)
- boost::throw_exception(
+ boost::serialization::throw_exception(
             xml_archive_exception(xml_archive_exception::xml_archive_parsing_error)
         );
     copy_to_ptr(s, ws);
@@ -123,7 +123,7 @@
     std::wstring twstring;
     bool result = gimpl->parse_string(is, twstring);
     if(! result)
- boost::throw_exception(
+ boost::serialization::throw_exception(
             xml_archive_exception(xml_archive_exception::xml_archive_parsing_error)
         );
     std::memcpy(ws, twstring.c_str(), twstring.size());
@@ -136,7 +136,7 @@
 xml_wiarchive_impl<Archive>::load_override(class_name_type & t, int){
     const std::wstring & ws = gimpl->rv.class_name;
     if(ws.size() > BOOST_SERIALIZATION_MAX_KEY_SIZE - 1)
- boost::throw_exception(
+ boost::serialization::throw_exception(
             archive_exception(archive_exception::invalid_class_name)
         );
     copy_to_ptr(t, ws);

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -30,8 +30,8 @@
 } // namespace std
 #endif
 
-#include <boost/throw_exception.hpp>
-#include <boost/pfto.hpp>
+#include <boost/serialization/throw_exception.hpp>
+#include <boost/serialization/pfto.hpp>
 
 #include <boost/archive/iterators/xml_escape.hpp>
 #include <boost/archive/iterators/wchar_from_mb.hpp>

Modified: branches/proto/v4/boost/archive/iterators/base64_from_binary.hpp
==============================================================================
--- branches/proto/v4/boost/archive/iterators/base64_from_binary.hpp (original)
+++ branches/proto/v4/boost/archive/iterators/base64_from_binary.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -19,7 +19,7 @@
 #include <cassert>
 
 #include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
-#include <boost/pfto.hpp>
+#include <boost/serialization/pfto.hpp>
 
 #include <boost/iterator/transform_iterator.hpp>
 #include <boost/archive/iterators/dataflow_exception.hpp>

Modified: branches/proto/v4/boost/archive/iterators/binary_from_base64.hpp
==============================================================================
--- branches/proto/v4/boost/archive/iterators/binary_from_base64.hpp (original)
+++ branches/proto/v4/boost/archive/iterators/binary_from_base64.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -19,8 +19,8 @@
 #include <cassert>
 
 #include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
-#include <boost/throw_exception.hpp>
-#include <boost/pfto.hpp>
+#include <boost/serialization/throw_exception.hpp>
+#include <boost/serialization/pfto.hpp>
 #include <boost/static_assert.hpp>
 
 #include <boost/iterator/transform_iterator.hpp>
@@ -57,7 +57,7 @@
         if((unsigned)t <= 127)
             value = lookup_table[(unsigned)t];
         if(-1 == value)
- boost::throw_exception(
+ boost::serialization::throw_exception(
                 dataflow_exception(dataflow_exception::invalid_base64_character)
             );
         return value;

Modified: branches/proto/v4/boost/archive/iterators/dataflow_exception.hpp
==============================================================================
--- branches/proto/v4/boost/archive/iterators/dataflow_exception.hpp (original)
+++ branches/proto/v4/boost/archive/iterators/dataflow_exception.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -19,6 +19,7 @@
 #include <boost/config.hpp>
 #ifndef BOOST_NO_EXCEPTIONS
 #include <exception>
+#endif //BOOST_NO_EXCEPTIONS
 
 #include <cassert>
 
@@ -76,5 +77,4 @@
 } // namespace archive
 } // namespace boost
 
-#endif //BOOST_NO_EXCEPTIONS
 #endif //BOOST_ARCHIVE_ITERATORS_DATAFLOW_EXCEPTION_HPP

Modified: branches/proto/v4/boost/archive/iterators/insert_linebreaks.hpp
==============================================================================
--- branches/proto/v4/boost/archive/iterators/insert_linebreaks.hpp (original)
+++ branches/proto/v4/boost/archive/iterators/insert_linebreaks.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -23,7 +23,7 @@
 namespace std{ using ::memcpy; }
 #endif
 
-#include <boost/pfto.hpp>
+#include <boost/serialization/pfto.hpp>
 
 #include <boost/iterator/iterator_adaptor.hpp>
 #include <boost/iterator/iterator_traits.hpp>

Modified: branches/proto/v4/boost/archive/iterators/mb_from_wchar.hpp
==============================================================================
--- branches/proto/v4/boost/archive/iterators/mb_from_wchar.hpp (original)
+++ branches/proto/v4/boost/archive/iterators/mb_from_wchar.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -28,7 +28,7 @@
 } // namespace std
 #endif
 
-#include <boost/pfto.hpp>
+#include <boost/serialization/pfto.hpp>
 #include <boost/iterator/iterator_adaptor.hpp>
 
 namespace boost {

Modified: branches/proto/v4/boost/archive/iterators/remove_whitespace.hpp
==============================================================================
--- branches/proto/v4/boost/archive/iterators/remove_whitespace.hpp (original)
+++ branches/proto/v4/boost/archive/iterators/remove_whitespace.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -20,7 +20,7 @@
 
 #include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
 
-#include <boost/pfto.hpp>
+#include <boost/serialization/pfto.hpp>
 
 #include <boost/iterator/iterator_adaptor.hpp>
 #include <boost/iterator/filter_iterator.hpp>

Modified: branches/proto/v4/boost/archive/iterators/transform_width.hpp
==============================================================================
--- branches/proto/v4/boost/archive/iterators/transform_width.hpp (original)
+++ branches/proto/v4/boost/archive/iterators/transform_width.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -25,7 +25,7 @@
 // or 3 8 bit characters
 
 #include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME & PTFO
-#include <boost/pfto.hpp>
+#include <boost/serialization/pfto.hpp>
 
 #include <boost/iterator/iterator_adaptor.hpp>
 #include <boost/iterator/iterator_traits.hpp>

Modified: branches/proto/v4/boost/archive/iterators/wchar_from_mb.hpp
==============================================================================
--- branches/proto/v4/boost/archive/iterators/wchar_from_mb.hpp (original)
+++ branches/proto/v4/boost/archive/iterators/wchar_from_mb.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -29,8 +29,8 @@
 } // namespace std
 #endif
 
-#include <boost/throw_exception.hpp>
-#include <boost/pfto.hpp>
+#include <boost/serialization/throw_exception.hpp>
+#include <boost/serialization/pfto.hpp>
 
 #include <boost/iterator/iterator_adaptor.hpp>
 #include <boost/archive/iterators/dataflow_exception.hpp>
@@ -116,7 +116,7 @@
     wchar_t retval;
     int result = std::mbtowc(& retval, buffer, MB_CUR_MAX);
     if(0 >= result)
- boost::throw_exception(iterators::dataflow_exception(
+ boost::serialization::throw_exception(iterators::dataflow_exception(
             iterators::dataflow_exception::invalid_conversion
         ));
     return retval;

Modified: branches/proto/v4/boost/archive/iterators/xml_escape.hpp
==============================================================================
--- branches/proto/v4/boost/archive/iterators/xml_escape.hpp (original)
+++ branches/proto/v4/boost/archive/iterators/xml_escape.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -19,7 +19,7 @@
 #include <cassert>
 
 #include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
-#include <boost/pfto.hpp>
+#include <boost/serialization/pfto.hpp>
 
 #include <boost/archive/iterators/escape.hpp>
 

Modified: branches/proto/v4/boost/archive/iterators/xml_unescape.hpp
==============================================================================
--- branches/proto/v4/boost/archive/iterators/xml_unescape.hpp (original)
+++ branches/proto/v4/boost/archive/iterators/xml_unescape.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -19,8 +19,8 @@
 #include <cassert>
 
 #include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
-#include <boost/throw_exception.hpp>
-#include <boost/pfto.hpp>
+#include <boost/serialization/throw_exception.hpp>
+#include <boost/serialization/pfto.hpp>
 
 #include <boost/archive/iterators/unescape.hpp>
 #include <boost/archive/iterators/dataflow_exception.hpp>
@@ -61,7 +61,7 @@
 void xml_unescape<Base>::drain_residue(const char * literal){
     do{
         if(* literal != * ++(this->base_reference()))
- boost::throw_exception(
+ boost::serialization::throw_exception(
                 dataflow_exception(
                     dataflow_exception::invalid_xml_escape_sequence
                 )

Modified: branches/proto/v4/boost/archive/polymorphic_iarchive.hpp
==============================================================================
--- branches/proto/v4/boost/archive/polymorphic_iarchive.hpp (original)
+++ branches/proto/v4/boost/archive/polymorphic_iarchive.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -29,7 +29,7 @@
 #include <string>
 #include <boost/cstdint.hpp>
 
-#include <boost/pfto.hpp>
+#include <boost/serialization/pfto.hpp>
 #include <boost/archive/detail/iserializer.hpp>
 #include <boost/archive/detail/interface_iarchive.hpp>
 #include <boost/serialization/nvp.hpp>

Modified: branches/proto/v4/boost/archive/polymorphic_oarchive.hpp
==============================================================================
--- branches/proto/v4/boost/archive/polymorphic_oarchive.hpp (original)
+++ branches/proto/v4/boost/archive/polymorphic_oarchive.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -28,7 +28,7 @@
 #endif
 
 #include <boost/cstdint.hpp>
-#include <boost/pfto.hpp>
+#include <boost/serialization/pfto.hpp>
 #include <boost/archive/detail/oserializer.hpp>
 #include <boost/archive/detail/interface_oarchive.hpp>
 #include <boost/serialization/nvp.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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -24,7 +24,7 @@
 #include <boost/shared_ptr.hpp>
 #include <boost/serialization/type_info_implementation.hpp>
 #include <boost/serialization/shared_ptr_132.hpp>
-#include <boost/throw_exception.hpp>
+#include <boost/serialization/throw_exception.hpp>
 
 #include <boost/archive/archive_exception.hpp>
 
@@ -93,7 +93,7 @@
         // note:if this exception is thrown, be sure that derived pointer
         // is either registered or exported.
         if(NULL == true_type)
- boost::throw_exception(
+ boost::serialization::throw_exception(
                 boost::archive::archive_exception(
                     boost::archive::archive_exception::unregistered_class
                 )

Modified: branches/proto/v4/boost/asio.hpp
==============================================================================
--- branches/proto/v4/boost/asio.hpp (original)
+++ branches/proto/v4/boost/asio.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -89,6 +89,7 @@
 #include <boost/asio/windows/basic_handle.hpp>
 #include <boost/asio/windows/basic_random_access_handle.hpp>
 #include <boost/asio/windows/basic_stream_handle.hpp>
+#include <boost/asio/windows/overlapped_ptr.hpp>
 #include <boost/asio/windows/random_access_handle.hpp>
 #include <boost/asio/windows/random_access_handle_service.hpp>
 #include <boost/asio/windows/stream_handle.hpp>

Modified: branches/proto/v4/boost/asio/basic_serial_port.hpp
==============================================================================
--- branches/proto/v4/boost/asio/basic_serial_port.hpp (original)
+++ branches/proto/v4/boost/asio/basic_serial_port.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -143,6 +143,20 @@
     return *this;
   }
 
+ /// Get a const reference to the lowest layer.
+ /**
+ * This function returns a const reference to the lowest layer in a stack of
+ * layers. Since a basic_serial_port cannot contain any further layers, it
+ * simply returns a reference to itself.
+ *
+ * @return A const reference to the lowest layer in the stack of layers.
+ * Ownership is not transferred to the caller.
+ */
+ const lowest_layer_type& lowest_layer() const
+ {
+ return *this;
+ }
+
   /// Open the serial port using the specified device name.
   /**
    * This function opens the serial port for the specified device name.

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -150,6 +150,20 @@
     return *this;
   }
 
+ /// Get a const reference to the lowest layer.
+ /**
+ * This function returns a const reference to the lowest layer in a stack of
+ * layers. Since a basic_socket cannot contain any further layers, it simply
+ * returns a reference to itself.
+ *
+ * @return A const reference to the lowest layer in the stack of layers.
+ * Ownership is not transferred to the caller.
+ */
+ const lowest_layer_type& lowest_layer() const
+ {
+ return *this;
+ }
+
   /// Open the socket using the specified protocol.
   /**
    * This function opens the socket so that it will use the specified protocol.

Modified: branches/proto/v4/boost/asio/buffered_read_stream.hpp
==============================================================================
--- branches/proto/v4/boost/asio/buffered_read_stream.hpp (original)
+++ branches/proto/v4/boost/asio/buffered_read_stream.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -94,6 +94,12 @@
     return next_layer_.lowest_layer();
   }
 
+ /// Get a const reference to the lowest layer.
+ const lowest_layer_type& lowest_layer() const
+ {
+ return next_layer_.lowest_layer();
+ }
+
   /// (Deprecated: use get_io_service().) Get the io_service associated with
   /// the object.
   boost::asio::io_service& io_service()

Modified: branches/proto/v4/boost/asio/buffered_stream.hpp
==============================================================================
--- branches/proto/v4/boost/asio/buffered_stream.hpp (original)
+++ branches/proto/v4/boost/asio/buffered_stream.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -84,6 +84,12 @@
     return stream_impl_.lowest_layer();
   }
 
+ /// Get a const reference to the lowest layer.
+ const lowest_layer_type& lowest_layer() const
+ {
+ return stream_impl_.lowest_layer();
+ }
+
   /// (Deprecated: use get_io_service().) Get the io_service associated with
   /// the object.
   boost::asio::io_service& io_service()

Modified: branches/proto/v4/boost/asio/buffered_write_stream.hpp
==============================================================================
--- branches/proto/v4/boost/asio/buffered_write_stream.hpp (original)
+++ branches/proto/v4/boost/asio/buffered_write_stream.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -95,6 +95,12 @@
     return next_layer_.lowest_layer();
   }
 
+ /// Get a const reference to the lowest layer.
+ const lowest_layer_type& lowest_layer() const
+ {
+ return next_layer_.lowest_layer();
+ }
+
   /// (Deprecated: use get_io_service().) Get the io_service associated with
   /// the object.
   boost::asio::io_service& io_service()

Modified: branches/proto/v4/boost/asio/completion_condition.hpp
==============================================================================
--- branches/proto/v4/boost/asio/completion_condition.hpp (original)
+++ branches/proto/v4/boost/asio/completion_condition.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -27,22 +27,40 @@
 
 namespace detail {
 
+// The default maximum number of bytes to transfer in a single operation.
+enum { default_max_transfer_size = 65536 };
+
+// Adapt result of old-style completion conditions (which had a bool result
+// where true indicated that the operation was complete).
+inline std::size_t adapt_completion_condition_result(bool result)
+{
+ return result ? 0 : default_max_transfer_size;
+}
+
+// Adapt result of current completion conditions (which have a size_t result
+// where 0 means the operation is complete, and otherwise the result is the
+// maximum number of bytes to transfer on the next underlying operation).
+inline std::size_t adapt_completion_condition_result(std::size_t result)
+{
+ return result;
+}
+
 class transfer_all_t
 {
 public:
- typedef bool result_type;
+ typedef std::size_t result_type;
 
   template <typename Error>
- bool operator()(const Error& err, std::size_t)
+ std::size_t operator()(const Error& err, std::size_t)
   {
- return !!err;
+ return !!err ? 0 : default_max_transfer_size;
   }
 };
 
 class transfer_at_least_t
 {
 public:
- typedef bool result_type;
+ typedef std::size_t result_type;
 
   explicit transfer_at_least_t(std::size_t minimum)
     : minimum_(minimum)
@@ -50,9 +68,10 @@
   }
 
   template <typename Error>
- bool operator()(const Error& err, std::size_t bytes_transferred)
+ std::size_t operator()(const Error& err, std::size_t bytes_transferred)
   {
- return !!err || bytes_transferred >= minimum_;
+ return (!!err || bytes_transferred >= minimum_)
+ ? 0 : default_max_transfer_size;
   }
 
 private:

Modified: branches/proto/v4/boost/asio/detail/consuming_buffers.hpp
==============================================================================
--- branches/proto/v4/boost/asio/detail/consuming_buffers.hpp (original)
+++ branches/proto/v4/boost/asio/detail/consuming_buffers.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -20,11 +20,13 @@
 #include <boost/asio/detail/push_options.hpp>
 #include <algorithm>
 #include <cstddef>
+#include <limits>
 #include <boost/config.hpp>
 #include <boost/iterator/iterator_facade.hpp>
 #include <boost/asio/detail/pop_options.hpp>
 
 #include <boost/asio/buffer.hpp>
+#include <boost/asio/completion_condition.hpp>
 
 namespace boost {
 namespace asio {
@@ -47,33 +49,33 @@
   // Construct with a buffer for the first entry and an iterator
   // range for the remaining entries.
   consuming_buffers_iterator(bool at_end, const Buffer& first,
- Buffer_Iterator begin_remainder, Buffer_Iterator end_remainder)
- : at_end_(at_end),
+ Buffer_Iterator begin_remainder, Buffer_Iterator end_remainder,
+ std::size_t max_size)
+ : at_end_(max_size > 0 ? at_end : true),
       first_(buffer(first, max_size)),
       begin_remainder_(begin_remainder),
       end_remainder_(end_remainder),
- offset_(0)
+ offset_(0),
+ max_size_(max_size)
   {
   }
 
 private:
   friend class boost::iterator_core_access;
 
- enum { max_size = 65536 };
-
   void increment()
   {
     if (!at_end_)
     {
       if (begin_remainder_ == end_remainder_
- || offset_ + buffer_size(first_) >= max_size)
+ || offset_ + buffer_size(first_) >= max_size_)
       {
         at_end_ = true;
       }
       else
       {
         offset_ += buffer_size(first_);
- first_ = buffer(*begin_remainder_++, max_size - offset_);
+ first_ = buffer(*begin_remainder_++, max_size_ - offset_);
       }
     }
   }
@@ -100,6 +102,7 @@
   Buffer_Iterator begin_remainder_;
   Buffer_Iterator end_remainder_;
   std::size_t offset_;
+ std::size_t max_size_;
 };
 
 // A proxy for a sub-range in a list of buffers.
@@ -119,7 +122,8 @@
     : buffers_(buffers),
       at_end_(buffers_.begin() == buffers_.end()),
       first_(*buffers_.begin()),
- begin_remainder_(buffers_.begin())
+ begin_remainder_(buffers_.begin()),
+ max_size_((std::numeric_limits<std::size_t>::max)())
   {
     if (!at_end_)
       ++begin_remainder_;
@@ -130,7 +134,8 @@
     : buffers_(other.buffers_),
       at_end_(other.at_end_),
       first_(other.first_),
- begin_remainder_(buffers_.begin())
+ begin_remainder_(buffers_.begin()),
+ max_size_(other.max_size_)
   {
     typename Buffers::const_iterator first = other.buffers_.begin();
     typename Buffers::const_iterator second = other.begin_remainder_;
@@ -147,13 +152,15 @@
     typename Buffers::const_iterator first = other.buffers_.begin();
     typename Buffers::const_iterator second = other.begin_remainder_;
     std::advance(begin_remainder_, std::distance(first, second));
+ max_size_ = other.max_size_;
     return *this;
   }
 
   // Get a forward-only iterator to the first element.
   const_iterator begin() const
   {
- return const_iterator(at_end_, first_, begin_remainder_, buffers_.end());
+ return const_iterator(at_end_, first_,
+ begin_remainder_, buffers_.end(), max_size_);
   }
 
   // Get a forward-only iterator for one past the last element.
@@ -162,6 +169,12 @@
     return const_iterator();
   }
 
+ // Set the maximum size for a single transfer.
+ void set_max_size(std::size_t max_size)
+ {
+ max_size_ = max_size;
+ }
+
   // Consume the specified number of bytes from the buffers.
   void consume(std::size_t size)
   {
@@ -198,6 +211,7 @@
   bool at_end_;
   Buffer first_;
   typename Buffers::const_iterator begin_remainder_;
+ std::size_t max_size_;
 };
 
 // Specialisation for null_buffers to ensure that the null_buffers type is
@@ -212,6 +226,11 @@
     // No-op.
   }
 
+ void set_max_size(std::size_t)
+ {
+ // No-op.
+ }
+
   void consume(std::size_t)
   {
     // No-op.

Modified: branches/proto/v4/boost/asio/detail/descriptor_ops.hpp
==============================================================================
--- branches/proto/v4/boost/asio/detail/descriptor_ops.hpp (original)
+++ branches/proto/v4/boost/asio/detail/descriptor_ops.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -59,17 +59,28 @@
   return error_wrapper(::close(d), ec);
 }
 
+inline void init_buf_iov_base(void*& base, void* addr)
+{
+ base = addr;
+}
+
+template <typename T>
+inline void init_buf_iov_base(T& base, void* addr)
+{
+ base = static_cast<T>(addr);
+}
+
 typedef iovec buf;
 
 inline void init_buf(buf& b, void* data, size_t size)
 {
- b.iov_base = data;
+ init_buf_iov_base(b.iov_base, data);
   b.iov_len = size;
 }
 
 inline void init_buf(buf& b, const void* data, size_t size)
 {
- b.iov_base = const_cast<void*>(data);
+ init_buf_iov_base(b.iov_base, const_cast<void*>(data));
   b.iov_len = size;
 }
 

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -74,10 +74,21 @@
 
     enum
     {
- user_set_non_blocking = 1, // The user wants a non-blocking socket.
- internal_non_blocking = 2, // The socket has been set non-blocking.
- enable_connection_aborted = 4, // User wants connection_aborted errors.
- user_set_linger = 8 // The user set the linger option.
+ // The user wants a non-blocking socket.
+ user_set_non_blocking = 1,
+
+ // The implementation wants a non-blocking socket (in order to be able to
+ // perform asynchronous read and write operations).
+ internal_non_blocking = 2,
+
+ // Helper "flag" used to determine whether the socket is non-blocking.
+ non_blocking = user_set_non_blocking | internal_non_blocking,
+
+ // User wants connection_aborted errors, which are disabled by default.
+ enable_connection_aborted = 4,
+
+ // The user set the linger option. Needs to be checked when closing.
+ user_set_linger = 8
     };
 
     // Flags indicating the current state of the socket.
@@ -120,12 +131,12 @@
     {
       reactor_.close_descriptor(impl.socket_, impl.reactor_data_);
 
- if (impl.flags_ & implementation_type::internal_non_blocking)
+ if (impl.flags_ & implementation_type::non_blocking)
       {
         ioctl_arg_type non_blocking = 0;
         boost::system::error_code ignored_ec;
         socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ignored_ec);
- impl.flags_ &= ~implementation_type::internal_non_blocking;
+ impl.flags_ &= ~implementation_type::non_blocking;
       }
 
       if (impl.flags_ & implementation_type::user_set_linger)
@@ -214,12 +225,12 @@
     {
       reactor_.close_descriptor(impl.socket_, impl.reactor_data_);
 
- if (impl.flags_ & implementation_type::internal_non_blocking)
+ if (impl.flags_ & implementation_type::non_blocking)
       {
         ioctl_arg_type non_blocking = 0;
         boost::system::error_code ignored_ec;
         socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ignored_ec);
- impl.flags_ &= ~implementation_type::internal_non_blocking;
+ impl.flags_ &= ~implementation_type::non_blocking;
       }
 
       if (socket_ops::close(impl.socket_, ec) == socket_error_retval)
@@ -433,11 +444,35 @@
 
     if (command.name() == static_cast<int>(FIONBIO))
     {
+ // Flags are manipulated in a temporary variable so that the socket
+ // implementation is not updated unless the ioctl operation succeeds.
+ unsigned char new_flags = impl.flags_;
       if (command.get())
- impl.flags_ |= implementation_type::user_set_non_blocking;
+ new_flags |= implementation_type::user_set_non_blocking;
       else
- impl.flags_ &= ~implementation_type::user_set_non_blocking;
- ec = boost::system::error_code();
+ new_flags &= ~implementation_type::user_set_non_blocking;
+
+ // Perform ioctl on socket if the non-blocking state has changed.
+ if (!(impl.flags_ & implementation_type::non_blocking)
+ && (new_flags & implementation_type::non_blocking))
+ {
+ ioctl_arg_type non_blocking = 1;
+ socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec);
+ }
+ else if ((impl.flags_ & implementation_type::non_blocking)
+ && !(new_flags & implementation_type::non_blocking))
+ {
+ ioctl_arg_type non_blocking = 0;
+ socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec);
+ }
+ else
+ {
+ ec = boost::system::error_code();
+ }
+
+ // Update socket implementation's flags only if successful.
+ if (!ec)
+ impl.flags_ = new_flags;
     }
     else
     {
@@ -530,18 +565,6 @@
       return 0;
     }
 
- // Make socket non-blocking if user wants non-blocking.
- if (impl.flags_ & implementation_type::user_set_non_blocking)
- {
- if (!(impl.flags_ & implementation_type::internal_non_blocking))
- {
- ioctl_arg_type non_blocking = 1;
- if (socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec))
- return 0;
- impl.flags_ |= implementation_type::internal_non_blocking;
- }
- }
-
     // Send the data.
     for (;;)
     {
@@ -684,12 +707,15 @@
       // Make socket non-blocking.
       if (!(impl.flags_ & implementation_type::internal_non_blocking))
       {
- ioctl_arg_type non_blocking = 1;
- boost::system::error_code ec;
- if (socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec))
+ if (!(impl.flags_ & implementation_type::non_blocking))
         {
- this->get_io_service().post(bind_handler(handler, ec, 0));
- return;
+ ioctl_arg_type non_blocking = 1;
+ boost::system::error_code ec;
+ if (socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec))
+ {
+ this->get_io_service().post(bind_handler(handler, ec, 0));
+ return;
+ }
         }
         impl.flags_ |= implementation_type::internal_non_blocking;
       }
@@ -773,18 +799,6 @@
           boost::asio::buffer_size(buffer));
     }
 
- // Make socket non-blocking if user wants non-blocking.
- if (impl.flags_ & implementation_type::user_set_non_blocking)
- {
- if (!(impl.flags_ & implementation_type::internal_non_blocking))
- {
- ioctl_arg_type non_blocking = 1;
- if (socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec))
- return 0;
- impl.flags_ |= implementation_type::internal_non_blocking;
- }
- }
-
     // Send the data.
     for (;;)
     {
@@ -912,12 +926,15 @@
       // Make socket non-blocking.
       if (!(impl.flags_ & implementation_type::internal_non_blocking))
       {
- ioctl_arg_type non_blocking = 1;
- boost::system::error_code ec;
- if (socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec))
+ if (!(impl.flags_ & implementation_type::non_blocking))
         {
- this->get_io_service().post(bind_handler(handler, ec, 0));
- return;
+ ioctl_arg_type non_blocking = 1;
+ boost::system::error_code ec;
+ if (socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec))
+ {
+ this->get_io_service().post(bind_handler(handler, ec, 0));
+ return;
+ }
         }
         impl.flags_ |= implementation_type::internal_non_blocking;
       }
@@ -981,18 +998,6 @@
       return 0;
     }
 
- // Make socket non-blocking if user wants non-blocking.
- if (impl.flags_ & implementation_type::user_set_non_blocking)
- {
- if (!(impl.flags_ & implementation_type::internal_non_blocking))
- {
- ioctl_arg_type non_blocking = 1;
- if (socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec))
- return 0;
- impl.flags_ |= implementation_type::internal_non_blocking;
- }
- }
-
     // Receive some data.
     for (;;)
     {
@@ -1148,12 +1153,15 @@
       // Make socket non-blocking.
       if (!(impl.flags_ & implementation_type::internal_non_blocking))
       {
- ioctl_arg_type non_blocking = 1;
- boost::system::error_code ec;
- if (socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec))
+ if (!(impl.flags_ & implementation_type::non_blocking))
         {
- this->get_io_service().post(bind_handler(handler, ec, 0));
- return;
+ ioctl_arg_type non_blocking = 1;
+ boost::system::error_code ec;
+ if (socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec))
+ {
+ this->get_io_service().post(bind_handler(handler, ec, 0));
+ return;
+ }
         }
         impl.flags_ |= implementation_type::internal_non_blocking;
       }
@@ -1225,18 +1233,6 @@
           boost::asio::buffer_size(buffer));
     }
 
- // Make socket non-blocking if user wants non-blocking.
- if (impl.flags_ & implementation_type::user_set_non_blocking)
- {
- if (!(impl.flags_ & implementation_type::internal_non_blocking))
- {
- ioctl_arg_type non_blocking = 1;
- if (socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec))
- return 0;
- impl.flags_ |= implementation_type::internal_non_blocking;
- }
- }
-
     // Receive some data.
     for (;;)
     {
@@ -1385,12 +1381,15 @@
       // Make socket non-blocking.
       if (!(impl.flags_ & implementation_type::internal_non_blocking))
       {
- ioctl_arg_type non_blocking = 1;
- boost::system::error_code ec;
- if (socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec))
+ if (!(impl.flags_ & implementation_type::non_blocking))
         {
- this->get_io_service().post(bind_handler(handler, ec, 0));
- return;
+ ioctl_arg_type non_blocking = 1;
+ boost::system::error_code ec;
+ if (socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec))
+ {
+ this->get_io_service().post(bind_handler(handler, ec, 0));
+ return;
+ }
         }
         impl.flags_ |= implementation_type::internal_non_blocking;
       }
@@ -1450,18 +1449,6 @@
       return ec;
     }
 
- // Make socket non-blocking if user wants non-blocking.
- if (impl.flags_ & implementation_type::user_set_non_blocking)
- {
- if (!(impl.flags_ & implementation_type::internal_non_blocking))
- {
- ioctl_arg_type non_blocking = 1;
- if (socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec))
- return ec;
- impl.flags_ |= implementation_type::internal_non_blocking;
- }
- }
-
     // Accept a socket.
     for (;;)
     {
@@ -1623,12 +1610,15 @@
       // Make socket non-blocking.
       if (!(impl.flags_ & implementation_type::internal_non_blocking))
       {
- ioctl_arg_type non_blocking = 1;
- boost::system::error_code ec;
- if (socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec))
+ if (!(impl.flags_ & implementation_type::non_blocking))
         {
- this->get_io_service().post(bind_handler(handler, ec));
- return;
+ ioctl_arg_type non_blocking = 1;
+ boost::system::error_code ec;
+ if (socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec))
+ {
+ this->get_io_service().post(bind_handler(handler, ec));
+ return;
+ }
         }
         impl.flags_ |= implementation_type::internal_non_blocking;
       }
@@ -1652,18 +1642,30 @@
       return ec;
     }
 
- if (impl.flags_ & implementation_type::internal_non_blocking)
- {
- // Mark the socket as blocking while we perform the connect.
- ioctl_arg_type non_blocking = 0;
- if (socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec))
- return ec;
- impl.flags_ &= ~implementation_type::internal_non_blocking;
- }
-
     // Perform the connect operation.
     socket_ops::connect(impl.socket_,
         peer_endpoint.data(), peer_endpoint.size(), ec);
+ if (ec != boost::asio::error::in_progress
+ && ec != boost::asio::error::would_block)
+ {
+ // The connect operation finished immediately.
+ return ec;
+ }
+
+ // Wait for socket to become ready.
+ if (socket_ops::poll_connect(impl.socket_, ec) < 0)
+ return ec;
+
+ // Get the error code from the connect operation.
+ int connect_error = 0;
+ size_t connect_error_len = sizeof(connect_error);
+ if (socket_ops::getsockopt(impl.socket_, SOL_SOCKET, SO_ERROR,
+ &connect_error, &connect_error_len, ec) == socket_error_retval)
+ return ec;
+
+ // Return the result of the connect operation.
+ ec = boost::system::error_code(connect_error,
+ boost::asio::error::get_system_category());
     return ec;
   }
 
@@ -1731,12 +1733,15 @@
     // Make socket non-blocking.
     if (!(impl.flags_ & implementation_type::internal_non_blocking))
     {
- ioctl_arg_type non_blocking = 1;
- boost::system::error_code ec;
- if (socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec))
+ if (!(impl.flags_ & implementation_type::non_blocking))
       {
- this->get_io_service().post(bind_handler(handler, ec));
- return;
+ ioctl_arg_type non_blocking = 1;
+ boost::system::error_code ec;
+ if (socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec))
+ {
+ this->get_io_service().post(bind_handler(handler, ec));
+ return;
+ }
       }
       impl.flags_ |= implementation_type::internal_non_blocking;
     }

Modified: branches/proto/v4/boost/asio/detail/select_interrupter.hpp
==============================================================================
--- branches/proto/v4/boost/asio/detail/select_interrupter.hpp (original)
+++ branches/proto/v4/boost/asio/detail/select_interrupter.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -21,6 +21,7 @@
 #include <boost/config.hpp>
 #include <boost/asio/detail/pop_options.hpp>
 
+#include <boost/asio/detail/eventfd_select_interrupter.hpp>
 #include <boost/asio/detail/pipe_select_interrupter.hpp>
 #include <boost/asio/detail/socket_select_interrupter.hpp>
 
@@ -30,6 +31,8 @@
 
 #if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
 typedef socket_select_interrupter select_interrupter;
+#elif defined(BOOST_ASIO_HAS_EVENTFD)
+typedef eventfd_select_interrupter select_interrupter;
 #else
 typedef pipe_select_interrupter select_interrupter;
 #endif

Modified: branches/proto/v4/boost/asio/detail/socket_ops.hpp
==============================================================================
--- branches/proto/v4/boost/asio/detail/socket_ops.hpp (original)
+++ branches/proto/v4/boost/asio/detail/socket_ops.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -203,6 +203,17 @@
   return result;
 }
 
+inline void init_buf_iov_base(void*& base, void* addr)
+{
+ base = addr;
+}
+
+template <typename T>
+inline void init_buf_iov_base(T& base, void* addr)
+{
+ base = static_cast<T>(addr);
+}
+
 #if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
 typedef WSABUF buf;
 #else // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
@@ -215,7 +226,7 @@
   b.buf = static_cast<char*>(data);
   b.len = static_cast<u_long>(size);
 #else // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
- b.iov_base = data;
+ init_buf_iov_base(b.iov_base, data);
   b.iov_len = size;
 #endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
 }
@@ -226,7 +237,7 @@
   b.buf = static_cast<char*>(const_cast<void*>(data));
   b.len = static_cast<u_long>(size);
 #else // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
- b.iov_base = const_cast<void*>(data);
+ init_buf_iov_base(b.iov_base, const_cast<void*>(data));
   b.iov_len = size;
 #endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
 }
@@ -702,6 +713,32 @@
 #endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
 }
 
+inline int poll_connect(socket_type s, boost::system::error_code& ec)
+{
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ FD_SET write_fds;
+ FD_ZERO(&write_fds);
+ FD_SET(s, &write_fds);
+ FD_SET except_fds;
+ FD_ZERO(&except_fds);
+ FD_SET(s, &except_fds);
+ clear_error(ec);
+ int result = error_wrapper(::select(s, 0, &write_fds, &except_fds, 0), ec);
+# if defined(UNDER_CE)
+ if (result >= 0)
+ clear_error(ec);
+# endif
+ return result;
+#else // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ pollfd fds;
+ fds.fd = s;
+ fds.events = POLLOUT;
+ fds.revents = 0;
+ clear_error(ec);
+ return error_wrapper(::poll(&fds, 1, -1), ec);
+#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+}
+
 inline const char* inet_ntop(int af, const void* src, char* dest, size_t length,
     unsigned long scope_id, boost::system::error_code& ec)
 {

Modified: branches/proto/v4/boost/asio/detail/win_iocp_io_service.hpp
==============================================================================
--- branches/proto/v4/boost/asio/detail/win_iocp_io_service.hpp (original)
+++ branches/proto/v4/boost/asio/detail/win_iocp_io_service.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -531,7 +531,7 @@
           // Wake up next thread that is blocked on GetQueuedCompletionStatus.
           if (!::PostQueuedCompletionStatus(iocp_.handle, 0, 0, 0))
           {
- DWORD last_error = ::GetLastError();
+ last_error = ::GetLastError();
             ec = boost::system::error_code(last_error,
                 boost::asio::error::get_system_category());
             return 0;

Modified: branches/proto/v4/boost/asio/detail/win_iocp_io_service_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/asio/detail/win_iocp_io_service_fwd.hpp (original)
+++ branches/proto/v4/boost/asio/detail/win_iocp_io_service_fwd.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -37,6 +37,7 @@
 namespace detail {
 
 class win_iocp_io_service;
+class win_iocp_overlapped_ptr;
 
 } // namespace detail
 } // namespace asio

Modified: branches/proto/v4/boost/asio/detail/win_thread.hpp
==============================================================================
--- branches/proto/v4/boost/asio/detail/win_thread.hpp (original)
+++ branches/proto/v4/boost/asio/detail/win_thread.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -80,6 +80,11 @@
         boost::throw_exception(e);
       }
     }
+ else
+ {
+ arg->entry_event_ = 0;
+ arg->exit_event_ = 0;
+ }
 
     unsigned int thread_id = 0;
     thread_ = reinterpret_cast<HANDLE>(::_beginthreadex(0, 0,

Modified: branches/proto/v4/boost/asio/impl/read.ipp
==============================================================================
--- branches/proto/v4/boost/asio/impl/read.ipp (original)
+++ branches/proto/v4/boost/asio/impl/read.ipp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -38,18 +38,20 @@
 std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers,
     CompletionCondition completion_condition, boost::system::error_code& ec)
 {
+ ec = boost::system::error_code();
   boost::asio::detail::consuming_buffers<
     mutable_buffer, MutableBufferSequence> tmp(buffers);
   std::size_t total_transferred = 0;
+ tmp.set_max_size(detail::adapt_completion_condition_result(
+ completion_condition(ec, total_transferred)));
   while (tmp.begin() != tmp.end())
   {
     std::size_t bytes_transferred = s.read_some(tmp, ec);
     tmp.consume(bytes_transferred);
     total_transferred += bytes_transferred;
- if (completion_condition(ec, total_transferred))
- return total_transferred;
+ tmp.set_max_size(detail::adapt_completion_condition_result(
+ completion_condition(ec, total_transferred)));
   }
- ec = boost::system::error_code();
   return total_transferred;
 }
 
@@ -79,18 +81,23 @@
     boost::asio::basic_streambuf<Allocator>& b,
     CompletionCondition completion_condition, boost::system::error_code& ec)
 {
+ ec = boost::system::error_code();
   std::size_t total_transferred = 0;
- for (;;)
+ std::size_t max_size = detail::adapt_completion_condition_result(
+ completion_condition(ec, total_transferred));
+ std::size_t bytes_available = std::min<std::size_t>(512,
+ std::min<std::size_t>(max_size, b.max_size() - b.size()));
+ while (bytes_available > 0)
   {
- std::size_t bytes_available =
- std::min<std::size_t>(512, b.max_size() - b.size());
     std::size_t bytes_transferred = s.read_some(b.prepare(bytes_available), ec);
     b.commit(bytes_transferred);
     total_transferred += bytes_transferred;
- if (b.size() == b.max_size()
- || completion_condition(ec, total_transferred))
- return total_transferred;
+ max_size = detail::adapt_completion_condition_result(
+ completion_condition(ec, total_transferred));
+ bytes_available = std::min<std::size_t>(512,
+ std::min<std::size_t>(max_size, b.max_size() - b.size()));
   }
+ return total_transferred;
 }
 
 template <typename SyncReadStream, typename Allocator>
@@ -140,8 +147,9 @@
     {
       total_transferred_ += bytes_transferred;
       buffers_.consume(bytes_transferred);
- if (completion_condition_(ec, total_transferred_)
- || buffers_.begin() == buffers_.end())
+ buffers_.set_max_size(detail::adapt_completion_condition_result(
+ completion_condition_(ec, total_transferred_)));
+ if (buffers_.begin() == buffers_.end())
       {
         handler_(ec, total_transferred_);
       }
@@ -198,6 +206,18 @@
 {
   boost::asio::detail::consuming_buffers<
     mutable_buffer, MutableBufferSequence> tmp(buffers);
+
+ boost::system::error_code ec;
+ std::size_t total_transferred = 0;
+ tmp.set_max_size(detail::adapt_completion_condition_result(
+ completion_condition(ec, total_transferred)));
+ if (tmp.begin() == tmp.end())
+ {
+ s.get_io_service().post(detail::bind_handler(
+ handler, ec, total_transferred));
+ return;
+ }
+
   s.async_read_some(tmp,
       detail::read_handler<AsyncReadStream, MutableBufferSequence,
         CompletionCondition, ReadHandler>(
@@ -235,15 +255,17 @@
     {
       total_transferred_ += bytes_transferred;
       streambuf_.commit(bytes_transferred);
- if (streambuf_.size() == streambuf_.max_size()
- || completion_condition_(ec, total_transferred_))
+ std::size_t max_size = detail::adapt_completion_condition_result(
+ completion_condition_(ec, total_transferred_));
+ std::size_t bytes_available = std::min<std::size_t>(512,
+ std::min<std::size_t>(max_size,
+ streambuf_.max_size() - streambuf_.size()));
+ if (bytes_available == 0)
       {
         handler_(ec, total_transferred_);
       }
       else
       {
- 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);
       }
     }
@@ -293,8 +315,19 @@
     boost::asio::basic_streambuf<Allocator>& b,
     CompletionCondition completion_condition, ReadHandler handler)
 {
- std::size_t bytes_available =
- std::min<std::size_t>(512, b.max_size() - b.size());
+ boost::system::error_code ec;
+ std::size_t total_transferred = 0;
+ std::size_t max_size = detail::adapt_completion_condition_result(
+ completion_condition(ec, total_transferred));
+ std::size_t bytes_available = std::min<std::size_t>(512,
+ std::min<std::size_t>(max_size, b.max_size() - b.size()));
+ if (bytes_available == 0)
+ {
+ s.get_io_service().post(detail::bind_handler(
+ handler, ec, total_transferred));
+ return;
+ }
+
   s.async_read_some(b.prepare(bytes_available),
       detail::read_streambuf_handler<AsyncReadStream, Allocator,
         CompletionCondition, ReadHandler>(

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -449,7 +449,7 @@
     // Found a match. We're done.
     boost::system::error_code ec;
     std::size_t bytes = iter - begin + 1;
- s.io_service().post(detail::bind_handler(handler, ec, bytes));
+ s.get_io_service().post(detail::bind_handler(handler, ec, bytes));
     return;
   }
 
@@ -457,7 +457,7 @@
   if (b.size() == b.max_size())
   {
     boost::system::error_code ec(error::not_found);
- s.io_service().post(detail::bind_handler(handler, ec, 0));
+ s.get_io_service().post(detail::bind_handler(handler, ec, 0));
     return;
   }
 
@@ -538,8 +538,8 @@
       if (streambuf_.size() == streambuf_.max_size())
       {
         std::size_t bytes = 0;
- boost::system::error_code ec(error::not_found);
- handler_(ec, bytes);
+ boost::system::error_code ec2(error::not_found);
+ handler_(ec2, bytes);
         return;
       }
 
@@ -610,7 +610,7 @@
       // Full match. We're done.
       boost::system::error_code ec;
       std::size_t bytes = result.first - begin + delim.length();
- s.io_service().post(detail::bind_handler(handler, ec, bytes));
+ s.get_io_service().post(detail::bind_handler(handler, ec, bytes));
       return;
     }
     else
@@ -629,7 +629,7 @@
   if (b.size() == b.max_size())
   {
     boost::system::error_code ec(error::not_found);
- s.io_service().post(detail::bind_handler(handler, ec, 0));
+ s.get_io_service().post(detail::bind_handler(handler, ec, 0));
     return;
   }
 
@@ -783,7 +783,7 @@
       // Full match. We're done.
       boost::system::error_code ec;
       std::size_t bytes = match_results[0].second - begin;
- s.io_service().post(detail::bind_handler(handler, ec, bytes));
+ s.get_io_service().post(detail::bind_handler(handler, ec, bytes));
       return;
     }
     else
@@ -802,7 +802,7 @@
   if (b.size() == b.max_size())
   {
     boost::system::error_code ec(error::not_found);
- s.io_service().post(detail::bind_handler(handler, ec, 0));
+ s.get_io_service().post(detail::bind_handler(handler, ec, 0));
     return;
   }
 
@@ -958,7 +958,7 @@
       // 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));
+ s.get_io_service().post(detail::bind_handler(handler, ec, bytes));
       return;
     }
     else
@@ -977,7 +977,7 @@
   if (b.size() == b.max_size())
   {
     boost::system::error_code ec(error::not_found);
- s.io_service().post(detail::bind_handler(handler, ec, 0));
+ s.get_io_service().post(detail::bind_handler(handler, ec, 0));
     return;
   }
 

Modified: branches/proto/v4/boost/asio/impl/write.ipp
==============================================================================
--- branches/proto/v4/boost/asio/impl/write.ipp (original)
+++ branches/proto/v4/boost/asio/impl/write.ipp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -33,18 +33,20 @@
 std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers,
     CompletionCondition completion_condition, boost::system::error_code& ec)
 {
+ ec = boost::system::error_code();
   boost::asio::detail::consuming_buffers<
     const_buffer, ConstBufferSequence> tmp(buffers);
   std::size_t total_transferred = 0;
+ tmp.set_max_size(detail::adapt_completion_condition_result(
+ completion_condition(ec, total_transferred)));
   while (tmp.begin() != tmp.end())
   {
     std::size_t bytes_transferred = s.write_some(tmp, ec);
     tmp.consume(bytes_transferred);
     total_transferred += bytes_transferred;
- if (completion_condition(ec, total_transferred))
- return total_transferred;
+ tmp.set_max_size(detail::adapt_completion_condition_result(
+ completion_condition(ec, total_transferred)));
   }
- ec = boost::system::error_code();
   return total_transferred;
 }
 
@@ -126,8 +128,9 @@
     {
       total_transferred_ += bytes_transferred;
       buffers_.consume(bytes_transferred);
- if (completion_condition_(ec, total_transferred_)
- || buffers_.begin() == buffers_.end())
+ buffers_.set_max_size(detail::adapt_completion_condition_result(
+ completion_condition_(ec, total_transferred_)));
+ if (buffers_.begin() == buffers_.end())
       {
         handler_(ec, total_transferred_);
       }
@@ -184,6 +187,18 @@
 {
   boost::asio::detail::consuming_buffers<
     const_buffer, ConstBufferSequence> tmp(buffers);
+
+ boost::system::error_code ec;
+ std::size_t total_transferred = 0;
+ tmp.set_max_size(detail::adapt_completion_condition_result(
+ completion_condition(ec, total_transferred)));
+ if (tmp.begin() == tmp.end())
+ {
+ s.get_io_service().post(detail::bind_handler(
+ handler, ec, total_transferred));
+ return;
+ }
+
   s.async_write_some(tmp,
       detail::write_handler<AsyncWriteStream, ConstBufferSequence,
         CompletionCondition, WriteHandler>(

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -135,6 +135,7 @@
   // The type of the platform-specific implementation.
 #if defined(BOOST_ASIO_HAS_IOCP)
   typedef detail::win_iocp_io_service impl_type;
+ friend class detail::win_iocp_overlapped_ptr;
 #elif defined(BOOST_ASIO_HAS_EPOLL)
   typedef detail::task_io_service<detail::epoll_reactor<false> > impl_type;
 #elif defined(BOOST_ASIO_HAS_KQUEUE)

Modified: branches/proto/v4/boost/asio/posix/basic_descriptor.hpp
==============================================================================
--- branches/proto/v4/boost/asio/posix/basic_descriptor.hpp (original)
+++ branches/proto/v4/boost/asio/posix/basic_descriptor.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -100,6 +100,20 @@
     return *this;
   }
 
+ /// Get a const reference to the lowest layer.
+ /**
+ * This function returns a const reference to the lowest layer in a stack of
+ * layers. Since a basic_descriptor cannot contain any further layers, it
+ * simply returns a reference to itself.
+ *
+ * @return A const reference to the lowest layer in the stack of layers.
+ * Ownership is not transferred to the caller.
+ */
+ const lowest_layer_type& lowest_layer() const
+ {
+ return *this;
+ }
+
   /// Assign an existing native descriptor to the descriptor.
   /*
    * This function opens the descriptor to hold an existing native descriptor.

Modified: branches/proto/v4/boost/asio/read.hpp
==============================================================================
--- branches/proto/v4/boost/asio/read.hpp (original)
+++ branches/proto/v4/boost/asio/read.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -46,7 +46,7 @@
  *
  * @li An error occurred.
  *
- * This operation is implemented in terms of one or more calls to the stream's
+ * This operation is implemented in terms of zero or more calls to the stream's
  * read_some function.
  *
  * @param s The stream from which the data is to be read. The type must support
@@ -85,7 +85,7 @@
  *
  * @li The completion_condition function object returns true.
  *
- * This operation is implemented in terms of one or more calls to the stream's
+ * This operation is implemented in terms of zero or more calls to the stream's
  * read_some function.
  *
  * @param s The stream from which the data is to be read. The type must support
@@ -98,15 +98,16 @@
  * @param completion_condition The function object to be called to determine
  * whether the read operation is complete. The signature of the function object
  * must be:
- * @code bool completion_condition(
- * const boost::system::error_code& error, // Result of latest read_some
- * // operation.
+ * @code std::size_t completion_condition(
+ * // Result of latest read_some operation.
+ * const boost::system::error_code& error,
  *
- * std::size_t bytes_transferred // Number of bytes transferred
- * // so far.
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
  * ); @endcode
- * 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.
+ * A return value of 0 indicates that the read operation is complete. A non-zero
+ * return value indicates the maximum number of bytes to be read on the next
+ * call to the stream's read_some function.
  *
  * @returns The number of bytes transferred.
  *
@@ -135,7 +136,7 @@
  *
  * @li The completion_condition function object returns true.
  *
- * This operation is implemented in terms of one or more calls to the stream's
+ * This operation is implemented in terms of zero or more calls to the stream's
  * read_some function.
  *
  * @param s The stream from which the data is to be read. The type must support
@@ -148,15 +149,16 @@
  * @param completion_condition The function object to be called to determine
  * whether the read operation is complete. The signature of the function object
  * must be:
- * @code bool completion_condition(
- * const boost::system::error_code& error, // Result of latest read_some
- * // operation.
+ * @code std::size_t completion_condition(
+ * // Result of latest read_some operation.
+ * const boost::system::error_code& error,
  *
- * std::size_t bytes_transferred // Number of bytes transferred
- * // so far.
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
  * ); @endcode
- * 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.
+ * A return value of 0 indicates that the read operation is complete. A non-zero
+ * return value indicates the maximum number of bytes to be read on the next
+ * call to the stream's read_some function.
  *
  * @param ec Set to indicate what error occurred, if any.
  *
@@ -175,7 +177,7 @@
  *
  * @li An error occurred.
  *
- * This operation is implemented in terms of one or more calls to the stream's
+ * This operation is implemented in terms of zero or more calls to the stream's
  * read_some function.
  *
  * @param s The stream from which the data is to be read. The type must support
@@ -202,7 +204,7 @@
  *
  * @li The completion_condition function object returns true.
  *
- * This operation is implemented in terms of one or more calls to the stream's
+ * This operation is implemented in terms of zero or more calls to the stream's
  * read_some function.
  *
  * @param s The stream from which the data is to be read. The type must support
@@ -213,15 +215,16 @@
  * @param completion_condition The function object to be called to determine
  * whether the read operation is complete. The signature of the function object
  * must be:
- * @code bool completion_condition(
- * const boost::system::error_code& error, // Result of latest read_some
- * // operation.
+ * @code std::size_t completion_condition(
+ * // Result of latest read_some operation.
+ * const boost::system::error_code& error,
  *
- * std::size_t bytes_transferred // Number of bytes transferred
- * // so far.
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
  * ); @endcode
- * 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.
+ * A return value of 0 indicates that the read operation is complete. A non-zero
+ * return value indicates the maximum number of bytes to be read on the next
+ * call to the stream's read_some function.
  *
  * @returns The number of bytes transferred.
  *
@@ -239,7 +242,7 @@
  *
  * @li The completion_condition function object returns true.
  *
- * This operation is implemented in terms of one or more calls to the stream's
+ * This operation is implemented in terms of zero or more calls to the stream's
  * read_some function.
  *
  * @param s The stream from which the data is to be read. The type must support
@@ -250,15 +253,16 @@
  * @param completion_condition The function object to be called to determine
  * whether the read operation is complete. The signature of the function object
  * must be:
- * @code bool completion_condition(
- * const boost::system::error_code& error, // Result of latest read_some
- * // operation.
+ * @code std::size_t completion_condition(
+ * // Result of latest read_some operation.
+ * const boost::system::error_code& error,
  *
- * std::size_t bytes_transferred // Number of bytes transferred
- * // so far.
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
  * ); @endcode
- * 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.
+ * A return value of 0 indicates that the read operation is complete. A non-zero
+ * return value indicates the maximum number of bytes to be read on the next
+ * call to the stream's read_some function.
  *
  * @param ec Set to indicate what error occurred, if any.
  *
@@ -292,7 +296,7 @@
  *
  * @li An error occurred.
  *
- * This operation is implemented in terms of one or more calls to the stream's
+ * This operation is implemented in terms of zero or more calls to the stream's
  * async_read_some function.
  *
  * @param s The stream from which the data is to be read. The type must support
@@ -366,16 +370,16 @@
  * @param completion_condition The function object to be called to determine
  * whether the read operation is complete. The signature of the function object
  * must be:
- * @code bool completion_condition(
- * const boost::system::error_code& error, // Result of latest read_some
- * // operation.
+ * @code std::size_t completion_condition(
+ * // Result of latest async_read_some operation.
+ * const boost::system::error_code& error,
  *
- * std::size_t bytes_transferred // Number of bytes transferred
- * // so far.
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
  * ); @endcode
- * 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.
+ * A return value of 0 indicates that the read operation is complete. A non-zero
+ * return value indicates the maximum number of bytes to be read on the next
+ * call to the stream's async_read_some function.
  *
  * @param handler The handler to be called when the read operation completes.
  * Copies will be made of the handler as required. The function signature of the
@@ -419,7 +423,7 @@
  *
  * @li An error occurred.
  *
- * This operation is implemented in terms of one or more calls to the stream's
+ * This operation is implemented in terms of zero or more calls to the stream's
  * async_read_some function.
  *
  * @param s The stream from which the data is to be read. The type must support
@@ -466,7 +470,7 @@
  *
  * @li The completion_condition function object returns true.
  *
- * This operation is implemented in terms of one or more calls to the stream's
+ * This operation is implemented in terms of zero or more calls to the stream's
  * async_read_some function.
  *
  * @param s The stream from which the data is to be read. The type must support
@@ -479,16 +483,16 @@
  * @param completion_condition The function object to be called to determine
  * whether the read operation is complete. The signature of the function object
  * must be:
- * @code bool completion_condition(
- * const boost::system::error_code& error, // Result of latest read_some
- * // operation.
+ * @code std::size_t completion_condition(
+ * // Result of latest async_read_some operation.
+ * const boost::system::error_code& error,
  *
- * std::size_t bytes_transferred // Number of bytes transferred
- * // so far.
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
  * ); @endcode
- * 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.
+ * A return value of 0 indicates that the read operation is complete. A non-zero
+ * return value indicates the maximum number of bytes to be read on the next
+ * call to the stream's async_read_some function.
  *
  * @param handler The handler to be called when the read operation completes.
  * Copies will be made of the handler as required. The function signature of the

Modified: branches/proto/v4/boost/asio/ssl/detail/openssl_stream_service.hpp
==============================================================================
--- branches/proto/v4/boost/asio/ssl/detail/openssl_stream_service.hpp (original)
+++ branches/proto/v4/boost/asio/ssl/detail/openssl_stream_service.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -337,7 +337,7 @@
         buffer_size = max_buffer_size;
 
       boost::function<int (SSL*)> send_func =
- boost::bind(&::SSL_write, boost::arg<1>(),
+ boost::bind<int>(&::SSL_write, boost::arg<1>(),
             boost::asio::buffer_cast<const void*>(*buffers.begin()),
             static_cast<int>(buffer_size));
       openssl_operation<Stream> op(
@@ -373,7 +373,7 @@
       buffer_size = max_buffer_size;
 
     boost::function<int (SSL*)> send_func =
- boost::bind(&::SSL_write, boost::arg<1>(),
+ boost::bind<int>(&::SSL_write, boost::arg<1>(),
           boost::asio::buffer_cast<const void*>(*buffers.begin()),
           static_cast<int>(buffer_size));
 
@@ -411,7 +411,7 @@
         buffer_size = max_buffer_size;
 
       boost::function<int (SSL*)> recv_func =
- boost::bind(&::SSL_read, boost::arg<1>(),
+ boost::bind<int>(&::SSL_read, boost::arg<1>(),
             boost::asio::buffer_cast<void*>(*buffers.begin()),
             static_cast<int>(buffer_size));
       openssl_operation<Stream> op(recv_func,
@@ -447,7 +447,7 @@
       buffer_size = max_buffer_size;
 
     boost::function<int (SSL*)> recv_func =
- boost::bind(&::SSL_read, boost::arg<1>(),
+ boost::bind<int>(&::SSL_read, boost::arg<1>(),
           boost::asio::buffer_cast<void*>(*buffers.begin()),
           static_cast<int>(buffer_size));
 

Modified: branches/proto/v4/boost/asio/ssl/stream.hpp
==============================================================================
--- branches/proto/v4/boost/asio/ssl/stream.hpp (original)
+++ branches/proto/v4/boost/asio/ssl/stream.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -150,6 +150,19 @@
     return next_layer_.lowest_layer();
   }
 
+ /// Get a const reference to the lowest layer.
+ /**
+ * This function returns a const reference to the lowest layer in a stack of
+ * stream layers.
+ *
+ * @return A const reference to the lowest layer in the stack of stream
+ * layers. Ownership is not transferred to the caller.
+ */
+ const lowest_layer_type& lowest_layer() const
+ {
+ return next_layer_.lowest_layer();
+ }
+
   /// Get the underlying implementation in the native type.
   /**
    * This function may be used to obtain the underlying implementation of the

Modified: branches/proto/v4/boost/asio/version.hpp
==============================================================================
--- branches/proto/v4/boost/asio/version.hpp (original)
+++ branches/proto/v4/boost/asio/version.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 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 100101 // 1.1.1
+#define BOOST_ASIO_VERSION 100200 // 1.2.0
 
 #endif // BOOST_ASIO_VERSION_HPP

Modified: branches/proto/v4/boost/asio/windows/basic_handle.hpp
==============================================================================
--- branches/proto/v4/boost/asio/windows/basic_handle.hpp (original)
+++ branches/proto/v4/boost/asio/windows/basic_handle.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -95,6 +95,20 @@
     return *this;
   }
 
+ /// Get a const reference to the lowest layer.
+ /**
+ * This function returns a const reference to the lowest layer in a stack of
+ * layers. Since a basic_handle cannot contain any further layers, it simply
+ * returns a reference to itself.
+ *
+ * @return A const reference to the lowest layer in the stack of layers.
+ * Ownership is not transferred to the caller.
+ */
+ const lowest_layer_type& lowest_layer() const
+ {
+ return *this;
+ }
+
   /// Assign an existing native handle to the handle.
   /*
    * This function opens the handle to hold an existing native handle.

Modified: branches/proto/v4/boost/asio/write.hpp
==============================================================================
--- branches/proto/v4/boost/asio/write.hpp (original)
+++ branches/proto/v4/boost/asio/write.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -45,7 +45,7 @@
  *
  * @li An error occurred.
  *
- * This operation is implemented in terms of one or more calls to the stream's
+ * This operation is implemented in terms of zero or more calls to the stream's
  * write_some function.
  *
  * @param s The stream to which the data is to be written. The type must support
@@ -84,7 +84,7 @@
  *
  * @li The completion_condition function object returns true.
  *
- * This operation is implemented in terms of one or more calls to the stream's
+ * This operation is implemented in terms of zero or more calls to the stream's
  * write_some function.
  *
  * @param s The stream to which the data is to be written. The type must support
@@ -97,16 +97,16 @@
  * @param completion_condition The function object to be called to determine
  * whether the write operation is complete. The signature of the function object
  * must be:
- * @code bool completion_condition(
- * const boost::system::error_code& error, // Result of latest write_some
- * // operation.
+ * @code std::size_t completion_condition(
+ * // Result of latest write_some operation.
+ * const boost::system::error_code& error,
  *
- * std::size_t bytes_transferred // Number of bytes transferred
- * // so far.
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
  * ); @endcode
- * 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.
+ * A return value of 0 indicates that the write operation is complete. A
+ * non-zero return value indicates the maximum number of bytes to be written on
+ * the next call to the stream's write_some function.
  *
  * @returns The number of bytes transferred.
  *
@@ -135,7 +135,7 @@
  *
  * @li The completion_condition function object returns true.
  *
- * This operation is implemented in terms of one or more calls to the stream's
+ * This operation is implemented in terms of zero or more calls to the stream's
  * write_some function.
  *
  * @param s The stream to which the data is to be written. The type must support
@@ -148,16 +148,16 @@
  * @param completion_condition The function object to be called to determine
  * whether the write operation is complete. The signature of the function object
  * must be:
- * @code bool completion_condition(
- * const boost::system::error_code& error, // Result of latest write_some
- * // operation.
+ * @code std::size_t completion_condition(
+ * // Result of latest write_some operation.
+ * const boost::system::error_code& error,
  *
- * std::size_t bytes_transferred // Number of bytes transferred
- * // so far.
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
  * ); @endcode
- * 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.
+ * A return value of 0 indicates that the write operation is complete. A
+ * non-zero return value indicates the maximum number of bytes to be written on
+ * the next call to the stream's write_some function.
  *
  * @param ec Set to indicate what error occurred, if any.
  *
@@ -178,7 +178,7 @@
  *
  * @li An error occurred.
  *
- * This operation is implemented in terms of one or more calls to the stream's
+ * This operation is implemented in terms of zero or more calls to the stream's
  * write_some function.
  *
  * @param s The stream to which the data is to be written. The type must support
@@ -207,7 +207,7 @@
  *
  * @li The completion_condition function object returns true.
  *
- * This operation is implemented in terms of one or more calls to the stream's
+ * This operation is implemented in terms of zero or more calls to the stream's
  * write_some function.
  *
  * @param s The stream to which the data is to be written. The type must support
@@ -218,16 +218,16 @@
  * @param completion_condition The function object to be called to determine
  * whether the write operation is complete. The signature of the function object
  * must be:
- * @code bool completion_condition(
- * const boost::system::error_code& error, // Result of latest write_some
- * // operation.
+ * @code std::size_t completion_condition(
+ * // Result of latest write_some operation.
+ * const boost::system::error_code& error,
  *
- * std::size_t bytes_transferred // Number of bytes transferred
- * // so far.
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
  * ); @endcode
- * 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.
+ * A return value of 0 indicates that the write operation is complete. A
+ * non-zero return value indicates the maximum number of bytes to be written on
+ * the next call to the stream's write_some function.
  *
  * @returns The number of bytes transferred.
  *
@@ -247,7 +247,7 @@
  *
  * @li The completion_condition function object returns true.
  *
- * This operation is implemented in terms of one or more calls to the stream's
+ * This operation is implemented in terms of zero or more calls to the stream's
  * write_some function.
  *
  * @param s The stream to which the data is to be written. The type must support
@@ -258,16 +258,16 @@
  * @param completion_condition The function object to be called to determine
  * whether the write operation is complete. The signature of the function object
  * must be:
- * @code bool completion_condition(
- * const boost::system::error_code& error, // Result of latest write_some
- * // operation.
+ * @code std::size_t completion_condition(
+ * // Result of latest write_some operation.
+ * const boost::system::error_code& error,
  *
- * std::size_t bytes_transferred // Number of bytes transferred
- * // so far.
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
  * ); @endcode
- * 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.
+ * A return value of 0 indicates that the write operation is complete. A
+ * non-zero return value indicates the maximum number of bytes to be written on
+ * the next call to the stream's write_some function.
  *
  * @param ec Set to indicate what error occurred, if any.
  *
@@ -301,7 +301,7 @@
  *
  * @li An error occurred.
  *
- * This operation is implemented in terms of one or more calls to the stream's
+ * This operation is implemented in terms of zero or more calls to the stream's
  * async_write_some function.
  *
  * @param s The stream to which the data is to be written. The type must support
@@ -355,7 +355,7 @@
  *
  * @li The completion_condition function object returns true.
  *
- * This operation is implemented in terms of one or more calls to the stream's
+ * This operation is implemented in terms of zero or more calls to the stream's
  * async_write_some function.
  *
  * @param s The stream to which the data is to be written. The type must support
@@ -369,16 +369,16 @@
  * @param completion_condition The function object to be called to determine
  * whether the write operation is complete. The signature of the function object
  * must be:
- * @code bool completion_condition(
- * const boost::system::error_code& error, // Result of latest write_some
- * // operation.
+ * @code std::size_t completion_condition(
+ * // Result of latest async_write_some operation.
+ * const boost::system::error_code& error,
  *
- * std::size_t bytes_transferred // Number of bytes transferred
- * // so far.
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
  * ); @endcode
- * 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.
+ * A return value of 0 indicates that the write operation is complete. A
+ * non-zero return value indicates the maximum number of bytes to be written on
+ * the next call to the stream's async_write_some function.
  *
  * @param handler The handler to be called when the write operation completes.
  * Copies will be made of the handler as required. The function signature of the
@@ -423,7 +423,7 @@
  *
  * @li An error occurred.
  *
- * This operation is implemented in terms of one or more calls to the stream's
+ * This operation is implemented in terms of zero or more calls to the stream's
  * async_write_some function.
  *
  * @param s The stream to which the data is to be written. The type must support
@@ -465,7 +465,7 @@
  *
  * @li The completion_condition function object returns true.
  *
- * This operation is implemented in terms of one or more calls to the stream's
+ * This operation is implemented in terms of zero or more calls to the stream's
  * async_write_some function.
  *
  * @param s The stream to which the data is to be written. The type must support
@@ -478,16 +478,16 @@
  * @param completion_condition The function object to be called to determine
  * whether the write operation is complete. The signature of the function object
  * must be:
- * @code bool completion_condition(
- * const boost::system::error_code& error, // Result of latest write_some
- * // operation.
+ * @code std::size_t completion_condition(
+ * // Result of latest async_write_some operation.
+ * const boost::system::error_code& error,
  *
- * std::size_t bytes_transferred // Number of bytes transferred
- * // so far.
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
  * ); @endcode
- * 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.
+ * A return value of 0 indicates that the write operation is complete. A
+ * non-zero return value indicates the maximum number of bytes to be written on
+ * the next call to the stream's async_write_some function.
  *
  * @param handler The handler to be called when the write operation completes.
  * Copies will be made of the handler as required. The function signature of the

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -131,7 +131,7 @@
 };
 
 /*!
- \struct capacity_control
+ \class capacity_control
     \brief Capacity controller of the space optimized circular buffer.
 */
 template <class Size>
@@ -166,7 +166,7 @@
 };
 
 /*!
- \class iterator
+ \struct iterator
     \brief Random access iterator for the circular buffer.
     \param Buff The type of the underlying circular buffer.
     \param Traits Basic iterator types.
@@ -174,7 +174,7 @@
           for iterating from begin() to end() of the circular buffer.
 */
 template <class Buff, class Traits>
-class iterator :
+struct iterator :
     public boost::iterator<
     std::random_access_iterator_tag,
     typename Traits::value_type,
@@ -185,7 +185,6 @@
     , public debug_iterator_base
 #endif // #if BOOST_CB_ENABLE_DEBUG
 {
-private:
 // Helper types
 
     //! Base iterator.
@@ -199,7 +198,6 @@
     //! Non-const iterator.
     typedef iterator<Buff, typename Traits::nonconst_self> nonconst_self;
 
-public:
 // Basic types
 
     //! The type of the elements stored in the circular buffer.
@@ -217,7 +215,6 @@
     //! Difference type.
     typedef typename base_iterator::difference_type difference_type;
 
-public:
 // Member variables
 
     //! The circular buffer where the iterator points to.
@@ -226,7 +223,6 @@
     //! An internal iterator.
     pointer m_it;
 
-public:
 // Construction & assignment
 
     // Default copy constructor.
@@ -392,7 +388,6 @@
     template <class Traits0>
     bool operator >= (const iterator<Buff, Traits0>& it) const { return !(*this < it); }
 
-private:
 // Helpers
 
     //! Get a pointer which would point to the same element as the iterator in case the circular buffer is linearized.

Modified: branches/proto/v4/boost/config/compiler/gcc.hpp
==============================================================================
--- branches/proto/v4/boost/config/compiler/gcc.hpp (original)
+++ branches/proto/v4/boost/config/compiler/gcc.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -91,6 +91,15 @@
 #if __GNUC__ > 3 || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 1 )
 #define BOOST_HAS_NRVO
 #endif
+//
+// RTTI and typeinfo detection is possible post gcc-4.3:
+//
+#if __GNUC__ * 100 + __GNUC_MINOR__ >= 403
+# ifndef __GXX_RTTI
+# define BOOST_NO_TYPEID
+# define BOOST_NO_RTTI
+# endif
+#endif
 
 //
 // C++0x features

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -16,7 +16,7 @@
 // if no threading API is detected.
 //
 
-#if (__PGIC__ == 7) && (__PGIC_MINOR__ <= 2)
+#if (__PGIC__ >= 7)
 
 #define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
 #define BOOST_NO_TWO_PHASE_NAME_LOOKUP

Modified: branches/proto/v4/boost/config/compiler/visualc.hpp
==============================================================================
--- branches/proto/v4/boost/config/compiler/visualc.hpp (original)
+++ branches/proto/v4/boost/config/compiler/visualc.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -123,6 +123,9 @@
 #ifndef _MSC_EXTENSIONS
 # define BOOST_DISABLE_WIN32
 #endif
+#ifndef _CPPRTTI
+# define BOOST_NO_RTTI
+#endif
 
 //
 // all versions support __declspec:

Modified: branches/proto/v4/boost/config/suffix.hpp
==============================================================================
--- branches/proto/v4/boost/config/suffix.hpp (original)
+++ branches/proto/v4/boost/config/suffix.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -1,21 +1,22 @@
 // Boost config.hpp configuration header file ------------------------------//
 
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Darin Adler 2001.
-// (C) Copyright Peter Dimov 2001.
-// (C) Copyright Bill Kempf 2002.
-// (C) Copyright Jens Maurer 2002.
-// (C) Copyright David Abrahams 2002 - 2003.
-// (C) Copyright Gennaro Prota 2003.
-// (C) Copyright Eric Friedman 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+// Copyright (c) 2001-2003 John Maddock
+// Copyright (c) 2001 Darin Adler
+// Copyright (c) 2001 Peter Dimov
+// Copyright (c) 2002 Bill Kempf
+// Copyright (c) 2002 Jens Maurer
+// Copyright (c) 2002-2003 David Abrahams
+// Copyright (c) 2003 Gennaro Prota
+// Copyright (c) 2003 Eric Friedman
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
 
-// See http://www.boost.org for most recent version.
+// See http://www.boost.org/ for most recent version.
 
 // Boost config.hpp policy and rationale documentation has been moved to
-// http://www.boost.org/libs/config
+// http://www.boost.org/libs/config/
 //
 // This file is intended to be stable, and relatively unchanging.
 // It should contain boilerplate code only - no compiler specific
@@ -157,6 +158,13 @@
 #endif
 
 //
+// Without typeid support we have no dynamic RTTI either:
+//
+#if defined(BOOST_NO_TYPEID) && !defined(BOOST_NO_RTTI)
+# define BOOST_NO_RTTI
+#endif
+
+//
 // If we have a standard allocator, then we have a partial one as well:
 //
 #if !defined(BOOST_NO_STD_ALLOCATOR)
@@ -266,11 +274,11 @@
 // Define BOOST_NO_SLIST and BOOST_NO_HASH if required.
 // Note that this is for backwards compatibility only.
 //
-# ifndef BOOST_HAS_SLIST
+# if !defined(BOOST_HAS_SLIST) && !defined(BOOST_NO_SLIST)
 # define BOOST_NO_SLIST
 # endif
 
-# ifndef BOOST_HAS_HASH
+# if !defined(BOOST_HAS_HASH) && !defined(BOOST_NO_HASH)
 # define BOOST_NO_HASH
 # endif
 
@@ -372,7 +380,7 @@
 // with
 // BOOST_USE_FACET(Type, loc);
 // Note do not add a std:: prefix to the front of BOOST_USE_FACET!
-// Use for BOOST_HAS_FACET is analagous.
+// Use for BOOST_HAS_FACET is analogous.
 
 #if defined(BOOST_NO_STD_USE_FACET)
 # ifdef BOOST_HAS_TWO_ARG_USE_FACET
@@ -453,12 +461,11 @@
 
 // BOOST_[APPEND_]EXPLICIT_TEMPLATE_[NON_]TYPE macros --------------------------//
 //
-// Some compilers have problems with function templates whose
-// template parameters don't appear in the function parameter
-// list (basically they just link one instantiation of the
-// template in the final executable). These macros provide a
-// uniform way to cope with the problem with no effects on the
-// calling syntax.
+// Some compilers have problems with function templates whose template
+// parameters don't appear in the function parameter list (basically
+// they just link one instantiation of the template in the final
+// executable). These macros provide a uniform way to cope with the
+// problem with no effects on the calling syntax.
 
 // Example:
 //
@@ -499,18 +506,18 @@
 # include "boost/type.hpp"
 # include "boost/non_type.hpp"
 
-# define BOOST_EXPLICIT_TEMPLATE_TYPE(t) boost::type<t>* = 0
-# define BOOST_EXPLICIT_TEMPLATE_TYPE_SPEC(t) boost::type<t>*
-# define BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t, v) boost::non_type<t, v>* = 0
+# define BOOST_EXPLICIT_TEMPLATE_TYPE(t) boost::type<t>* = 0
+# define BOOST_EXPLICIT_TEMPLATE_TYPE_SPEC(t) boost::type<t>*
+# define BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t, v) boost::non_type<t, v>* = 0
 # define BOOST_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v) boost::non_type<t, v>*
 
-# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t) \
+# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t) \
              , BOOST_EXPLICIT_TEMPLATE_TYPE(t)
-# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC(t) \
+# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC(t) \
              , BOOST_EXPLICIT_TEMPLATE_TYPE_SPEC(t)
-# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t, v) \
+# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t, v) \
              , BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t, v)
-# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v) \
+# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v) \
              , BOOST_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v)
 
 #else

Modified: branches/proto/v4/boost/detail/dynamic_bitset.hpp
==============================================================================
--- branches/proto/v4/boost/detail/dynamic_bitset.hpp (original)
+++ branches/proto/v4/boost/detail/dynamic_bitset.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 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, 2008 Gennaro Prota
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -9,14 +9,10 @@
 //
 // -----------------------------------------------------------
 
-// See http://www.boost.org/libs/dynamic_bitset/ for documentation.
-//
-// $Revision$ $Date$ - $Name$
-
 #ifndef BOOST_DETAIL_DYNAMIC_BITSET_HPP
 #define BOOST_DETAIL_DYNAMIC_BITSET_HPP
 
-#include <cstddef> // for std::size_t
+#include <cstddef>
 #include "boost/config.hpp"
 #include "boost/detail/workaround.hpp"
 
@@ -24,6 +20,7 @@
 namespace boost {
 
   namespace detail {
+ namespace dynamic_bitset_impl {
 
     // Gives (read-)access to the object representation
     // of an object of type T (3.9p4). CANNOT be used
@@ -46,13 +43,30 @@
 
     // ------- count function implementation --------------
 
- namespace dynamic_bitset_count_impl {
-
     typedef unsigned char byte_type;
 
- enum mode { access_by_bytes, access_by_blocks };
+ // This two entities
+ //
+ // enum mode { access_by_bytes, access_by_blocks };
+ // template <mode> struct mode_to_type {};
+ //
+ // were removed, since the regression logs (as of 24 Aug 2008) show
+ // that several compilers have troubles with recognizing
+ //
+ // const mode m = access_by_bytes
+ //
+ // as a constant expression
+ //
+ // *We'll use a bool, instead *.
+ //
+ template <bool value>
+ struct value_to_type
+ {
+ value_to_type() {}
+ };
+ const bool access_by_bytes = true;
+ const bool access_by_blocks = false;
 
- template <mode> struct mode_to_type {};
 
     // the table: wrapped in a class template, so
     // that it is only instantiated if/when needed
@@ -87,7 +101,7 @@
      template <typename Iterator>
      inline std::size_t do_count(Iterator first, std::size_t length,
                                  int /*dummy param*/,
- mode_to_type<access_by_bytes>* )
+ value_to_type<access_by_bytes>* )
      {
          std::size_t num = 0;
          if (length)
@@ -111,7 +125,7 @@
      //
      template <typename Iterator, typename ValueType>
      inline std::size_t do_count(Iterator first, std::size_t length, ValueType,
- mode_to_type<access_by_blocks>*)
+ value_to_type<access_by_blocks>*)
      {
          std::size_t num = 0;
          while (length){
@@ -129,8 +143,6 @@
          return num;
      }
 
-
- } // dynamic_bitset_count_impl
     // -------------------------------------------------------
 
 
@@ -139,7 +151,7 @@
     //
     // size_type(-1) / sizeof(T)
     //
- // from vector<>::max_size. This tries to get out more
+ // from vector<>::max_size. This tries to get more
     // meaningful info.
     //
     template <typename T>
@@ -158,16 +170,57 @@
 
     // for static_asserts
     template <typename T>
- struct dynamic_bitset_allowed_block_type {
+ struct allowed_block_type {
         enum { value = T(-1) > 0 }; // ensure T has no sign
     };
 
     template <>
- struct dynamic_bitset_allowed_block_type<bool> {
+ struct allowed_block_type<bool> {
         enum { value = false };
     };
 
 
+ template <typename T>
+ struct is_numeric {
+ enum { value = false };
+ };
+
+# define BOOST_dynamic_bitset_is_numeric(x) \
+ template<> \
+ struct is_numeric<x> { \
+ enum { value = true }; \
+ } /**/
+
+ BOOST_dynamic_bitset_is_numeric(bool);
+ BOOST_dynamic_bitset_is_numeric(char);
+
+#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
+ BOOST_dynamic_bitset_is_numeric(wchar_t);
+#endif
+
+ BOOST_dynamic_bitset_is_numeric(signed char);
+ BOOST_dynamic_bitset_is_numeric(short int);
+ BOOST_dynamic_bitset_is_numeric(int);
+ BOOST_dynamic_bitset_is_numeric(long int);
+
+ BOOST_dynamic_bitset_is_numeric(unsigned char);
+ BOOST_dynamic_bitset_is_numeric(unsigned short);
+ BOOST_dynamic_bitset_is_numeric(unsigned int);
+ BOOST_dynamic_bitset_is_numeric(unsigned long);
+
+#if defined(BOOST_HAS_LONG_LONG)
+ BOOST_dynamic_bitset_is_numeric(::boost::long_long_type);
+ BOOST_dynamic_bitset_is_numeric(::boost::ulong_long_type);
+#endif
+
+ // intentionally omitted
+ //BOOST_dynamic_bitset_is_numeric(float);
+ //BOOST_dynamic_bitset_is_numeric(double);
+ //BOOST_dynamic_bitset_is_numeric(long double);
+
+#undef BOOST_dynamic_bitset_is_numeric
+
+ } // dynamic_bitset_impl
   } // namespace detail
 
 } // namespace boost

Modified: branches/proto/v4/boost/dynamic_bitset.hpp
==============================================================================
--- branches/proto/v4/boost/dynamic_bitset.hpp (original)
+++ branches/proto/v4/boost/dynamic_bitset.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -1,7 +1,7 @@
-// --------------------------------------------------
+// -----------------------------------------------------------
 //
-// (C) Copyright Chuck Allison and Jeremy Siek 2001 - 2002.
-// (C) Copyright Gennaro Prota 2003 - 2004.
+// Copyright (c) 2001-2002 Chuck Allison and 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
@@ -9,10 +9,6 @@
 //
 // -----------------------------------------------------------
 
-// See http://www.boost.org/libs/dynamic_bitset/ for documentation.
-//
-// $Revision$ $Date$ - $Name$
-
 #ifndef BOOST_DYNAMIC_BITSET_HPP
 #define BOOST_DYNAMIC_BITSET_HPP
 

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -1,7 +1,7 @@
 // -----------------------------------------------------------
 //
 // Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
-// Copyright (c) 2003-2006 Gennaro Prota
+// Copyright (c) 2003-2006, 2008 Gennaro Prota
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -22,8 +22,8 @@
 
 // this should be in the config system some day
 // see http://lists.boost.org/MailArchives/boost/msg62291.php
-#define BOOST_DYNAMIC_BITSET_GNUC_VERSION ( __GNUC__ * 100 * 100 \
- + __GNUC_MINOR__ * 100)
+#define BOOST_DYNAMIC_BITSET_GNUC_VERSION ( (__GNUC__) * 100 * 100 \
+ + (__GNUC_MINOR__) * 100)
 
 // no-op function to workaround gcc bug c++/8419
 //

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -1,7 +1,7 @@
 // -----------------------------------------------------------
 //
 // Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
-// Copyright (c) 2003-2006 Gennaro Prota
+// Copyright (c) 2003-2006, 2008 Gennaro Prota
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -14,8 +14,8 @@
 
 #include <assert.h>
 #include <string>
-#include <stdexcept> // for std::overflow_error
-#include <algorithm> // for std::swap, min, copy, fill
+#include <stdexcept>
+#include <algorithm>
 #include <vector>
 #include <climits> // for CHAR_BIT
 
@@ -38,7 +38,7 @@
 #include "boost/detail/iterator.hpp" // used to implement append(Iter, Iter)
 #include "boost/static_assert.hpp"
 #include "boost/limits.hpp"
-#include "boost/pending/lowest_bit.hpp" // used by find_first/next
+#include "boost/pending/lowest_bit.hpp"
 
 
 namespace boost {
@@ -58,13 +58,13 @@
   // this class definition to avoid problems with VC++. Similarly,
   // with the member functions of nested classes.
 
- BOOST_STATIC_ASSERT(detail::dynamic_bitset_allowed_block_type<Block>::value);
+ BOOST_STATIC_ASSERT(detail::dynamic_bitset_impl::allowed_block_type<Block>::value);
 
 public:
     typedef Block block_type;
     typedef Allocator allocator_type;
     typedef std::size_t size_type;
- typedef int block_width_type;
+ typedef block_type block_width_type;
 
     BOOST_STATIC_CONSTANT(block_width_type, bits_per_block = (std::numeric_limits<Block>::digits));
     BOOST_STATIC_CONSTANT(size_type, npos = static_cast<size_type>(-1));
@@ -80,9 +80,9 @@
 
 
         // the one and only non-copy ctor
- reference(block_type & b, int pos)
+ reference(block_type & b, block_type pos)
             :m_block(b), m_mask(block_type(1) << pos)
- { assert(pos >= 0 && pos < bits_per_block); }
+ { assert( pos < bits_per_block); }
 
         void operator&(); // left undefined
 
@@ -166,10 +166,39 @@
     dynamic_bitset(BlockInputIterator first, BlockInputIterator last,
                    const Allocator& alloc = Allocator())
 
- :m_bits(first, last, alloc),
- m_num_bits(m_bits.size() * bits_per_block)
- {}
+ :m_bits(alloc),
+ m_num_bits(0)
+ {
+ using boost::detail::dynamic_bitset_impl::value_to_type;
+ using boost::detail::dynamic_bitset_impl::is_numeric;
+
+ const value_to_type<
+ is_numeric<BlockInputIterator>::value> selector;
+
+ dispatch_init(first, last, selector);
+ }
 
+ template <typename T>
+ void dispatch_init(T num_bits, unsigned long value,
+ detail::dynamic_bitset_impl::value_to_type<true>)
+ {
+ init_from_unsigned_long(static_cast<size_type>(num_bits), value);
+ }
+
+ template <typename T>
+ void dispatch_init(T first, T last,
+ detail::dynamic_bitset_impl::value_to_type<false>)
+ {
+ init_from_block_range(first, last);
+ }
+
+ template <typename BlockIter>
+ void init_from_block_range(BlockIter first, BlockIter last)
+ {
+ assert(m_bits.size() == 0);
+ m_bits.insert(m_bits.end(), first, last);
+ m_num_bits = m_bits.size() * bits_per_block;
+ }
 
     // copy constructor
     dynamic_bitset(const dynamic_bitset& b);
@@ -311,7 +340,7 @@
 
     block_width_type count_extra_bits() const { return bit_index(size()); }
     static size_type block_index(size_type pos) { return pos / bits_per_block; }
- static block_width_type bit_index(size_type pos) { return static_cast<int>(pos % bits_per_block); }
+ static block_width_type bit_index(size_type pos) { return static_cast<block_width_type>(pos % bits_per_block); }
     static Block bit_mask(size_type pos) { return Block(1) << bit_index(pos); }
 
     template <typename CharT, typename Traits, typename Alloc>
@@ -350,6 +379,39 @@
 
     }
 
+ void init_from_unsigned_long(size_type num_bits,
+ unsigned long value/*,
+ const Allocator& alloc*/)
+ {
+
+ assert(m_bits.size() == 0);
+
+ m_bits.resize(calc_num_blocks(num_bits));
+ m_num_bits = num_bits;
+
+ typedef unsigned long num_type;
+ typedef boost::detail::dynamic_bitset_impl
+ ::shifter<num_type, bits_per_block, ulong_width> shifter;
+
+ //if (num_bits == 0)
+ // return;
+
+ // zero out all bits at pos >= num_bits, if any;
+ // note that: num_bits == 0 implies value == 0
+ if (num_bits < static_cast<size_type>(ulong_width)) {
+ const num_type mask = (num_type(1) << num_bits) - 1;
+ value &= mask;
+ }
+
+ typename buffer_type::iterator it = m_bits.begin();
+ for( ; value; shifter::left_shift(value), ++it) {
+ *it = static_cast<block_type>(value);
+ }
+
+ }
+
+
+
 BOOST_DYNAMIC_BITSET_PRIVATE:
 
     bool m_unchecked_test(size_type pos) const;
@@ -378,6 +440,11 @@
       size_type n;
       Block mask;
       Block * current;
+
+ // not implemented
+ bit_appender(const bit_appender &);
+ bit_appender & operator=(const bit_appender &);
+
     public:
         bit_appender(dynamic_bitset & r) : bs(r), n(0), mask(0), current(0) {}
         ~bit_appender() {
@@ -417,7 +484,7 @@
 //
 // NOTE:
 // The compiler is actually right, until core issue 454 will be settled:
-// http://www.open-std.org/JTC1/SC22/WG21/docs/cwg_active.html#454
+// <http://www.open-std.org/JTC1/SC22/WG21/docs/cwg_active.html#454>
 //
 // It's arguable whether we want to mark this with BOOST_WORKAROUND or not.
 
@@ -534,28 +601,10 @@
 template <typename Block, typename Allocator>
 dynamic_bitset<Block, Allocator>::
 dynamic_bitset(size_type num_bits, unsigned long value, const Allocator& alloc)
- : m_bits(calc_num_blocks(num_bits), Block(0), alloc),
- m_num_bits(num_bits)
+ : m_bits(alloc),
+ m_num_bits(0)
 {
-
- typedef unsigned long num_type;
- typedef boost::detail::shifter<num_type, bits_per_block, ulong_width> shifter;
-
- //if (num_bits == 0)
- // return;
-
- // zero out all bits at pos >= num_bits, if any;
- // note that: num_bits == 0 implies value == 0
- if (num_bits < static_cast<size_type>(ulong_width)) {
- const num_type mask = (num_type(1) << num_bits) - 1;
- value &= mask;
- }
-
- typename buffer_type::iterator it = m_bits.begin();
- for( ; value; shifter::left_shift(value), ++it) {
- *it = static_cast<block_type>(value);
- }
-
+ init_from_unsigned_long(num_bits, value);
 }
 
 // copy constructor
@@ -764,27 +813,12 @@
             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.
-#if defined(_MSC_VER) && _MSC_VER >= 1400
-#pragma warning(push)
-#pragma warning(disable:4996)
-#endif
-
         // zero out div blocks at the less significant end
         std::fill_n(b, div, static_cast<block_type>(0));
 
-#if defined(_MSC_VER) && _MSC_VER >= 1400
-#pragma warning(pop)
-#endif
-
         // zero out any 1 bit that flowed into the unused part
         m_zero_unused_bits(); // thanks to Lester Gong
 
-
     }
 
     return *this;
@@ -963,21 +997,26 @@
     return b;
 }
 
-
 template <typename Block, typename Allocator>
 typename dynamic_bitset<Block, Allocator>::size_type
 dynamic_bitset<Block, Allocator>::count() const
 {
- using namespace detail::dynamic_bitset_count_impl;
+ using namespace detail::dynamic_bitset_impl;
 
- const bool no_padding = bits_per_block == CHAR_BIT * sizeof(Block);
- const bool enough_table_width = table_width >= CHAR_BIT;
+ // NOTE: I'm explicitly qualifying "bits_per_block" to workaround
+ // regressions of gcc 3.4.x
+ const bool no_padding =
+ dynamic_bitset<Block, Allocator>::bits_per_block
+ == CHAR_BIT * sizeof(Block);
 
- typedef mode_to_type< (no_padding && enough_table_width ?
- access_by_bytes : access_by_blocks) > m;
+ const bool enough_table_width = table_width >= CHAR_BIT;
 
- return do_count(m_bits.begin(), num_blocks(), Block(0), static_cast<m*>(0));
+ const bool mode = (no_padding && enough_table_width)
+ ? access_by_bytes
+ : access_by_blocks;
 
+ return do_count(m_bits.begin(), num_blocks(), Block(0),
+ static_cast<value_to_type<mode> *>(0));
 }
 
 
@@ -1072,12 +1111,11 @@
 
   const size_type last_block = block_index( max_size - 1 );
 
+ assert((last_block * bits_per_block) < static_cast<size_type>(ulong_width));
+
   result_type result = 0;
   for (size_type i = 0; i <= last_block; ++i) {
-
     const size_type offset = i * bits_per_block;
- assert( offset < static_cast<size_type>(ulong_width));
-
     result |= (static_cast<result_type>(m_bits[i]) << offset);
   }
 
@@ -1112,7 +1150,8 @@
     // his own allocator.
     //
 
- const size_type m = detail::vector_max_size_workaround(m_bits);
+ const size_type m = detail::dynamic_bitset_impl::
+ vector_max_size_workaround(m_bits);
 
     return m <= (size_type(-1)/bits_per_block) ?
         m * bits_per_block :

Modified: branches/proto/v4/boost/dynamic_bitset_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/dynamic_bitset_fwd.hpp (original)
+++ branches/proto/v4/boost/dynamic_bitset_fwd.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -1,7 +1,7 @@
-// --------------------------------------------------
+// -----------------------------------------------------------
 //
-// (C) Copyright Chuck Allison and Jeremy Siek 2001 - 2002.
-// (C) Copyright Gennaro Prota 2003 - 2004.
+// Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
+// 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,10 +9,6 @@
 //
 // -----------------------------------------------------------
 
-// See http://www.boost.org/libs/dynamic_bitset/ for documentation.
-//
-// $Revision$ $Date$ - $Name$
-
 #ifndef BOOST_DYNAMIC_BITSET_FWD_HPP
 #define BOOST_DYNAMIC_BITSET_FWD_HPP
 
@@ -24,6 +20,6 @@
           typename Allocator = std::allocator<Block> >
 class dynamic_bitset;
 
-} // namespace boost
+}
 
 #endif // include guard

Modified: branches/proto/v4/boost/exception.hpp
==============================================================================
--- branches/proto/v4/boost/exception.hpp (original)
+++ branches/proto/v4/boost/exception.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -7,13 +7,11 @@
 #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/get_error_info.hpp>
 #include <boost/exception/info.hpp>
 #include <boost/exception/info_tuple.hpp>
 #include <boost/exception_ptr.hpp>
-#include <boost/throw_exception.hpp>
 
 #endif

Deleted: branches/proto/v4/boost/exception/detail/cloning_base.hpp
==============================================================================
--- branches/proto/v4/boost/exception/detail/cloning_base.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
+++ (empty file)
@@ -1,38 +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)
-
-#ifndef UUID_F7D5662CCB0F11DCA353CAC656D89593
-#define UUID_F7D5662CCB0F11DCA353CAC656D89593
-
-#include <boost/detail/workaround.hpp>
-
-namespace
-boost
- {
- namespace
- exception_detail
- {
- class clone_base;
-
- class
- cloning_base
- {
- public:
-
- virtual clone_base const * clone() const = 0;
-
- protected:
-
-#if BOOST_WORKAROUND( __GNUC__, BOOST_TESTED_AT(4) )
-virtual //Disable bogus GCC warning.
-#endif
- ~cloning_base() throw()
- {
- }
- };
- }
- }
-
-#endif

Deleted: branches/proto/v4/boost/exception/detail/counted_base.hpp
==============================================================================
--- branches/proto/v4/boost/exception/detail/counted_base.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
+++ (empty file)
@@ -1,49 +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)
-
-#ifndef UUID_DBA0D90C930911DCBA7B675A56D89593
-#define UUID_DBA0D90C930911DCBA7B675A56D89593
-
-#include <boost/detail/workaround.hpp>
-
-namespace
-boost
- {
- namespace
- exception_detail
- {
- class
- counted_base
- {
- friend
- void
- intrusive_ptr_add_ref( counted_base const * c )
- {
- c->add_ref();
- }
-
- friend
- void
- intrusive_ptr_release( counted_base const * c )
- {
- c->release();
- }
-
- virtual void add_ref() const=0;
- virtual void release() const=0;
-
- protected:
-
-#if BOOST_WORKAROUND( __GNUC__, BOOST_TESTED_AT(4) )
-virtual //Disable bogus GCC warning.
-#endif
- ~counted_base() throw()
- {
- }
- };
- }
- }
-
-#endif

Modified: branches/proto/v4/boost/exception/error_info.hpp
==============================================================================
--- branches/proto/v4/boost/exception/error_info.hpp (original)
+++ branches/proto/v4/boost/exception/error_info.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -3,14 +3,4 @@
 //Distributed under the Boost Software License, Version 1.0. (See accompanying
 //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#ifndef UUID_0E57632CCA3011DCB876FD9955D89593
-#define UUID_0E57632CCA3011DCB876FD9955D89593
-
-namespace
-boost
- {
- template <class Tag,class T>
- class error_info;
- }
-
-#endif
+namespace boost { template <class Tag,class T> class error_info; }

Modified: branches/proto/v4/boost/exception/exception.hpp
==============================================================================
--- branches/proto/v4/boost/exception/exception.hpp (original)
+++ branches/proto/v4/boost/exception/exception.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -6,115 +6,374 @@
 #ifndef UUID_274DA366004E11DCB1DDFE2E56D89593
 #define UUID_274DA366004E11DCB1DDFE2E56D89593
 
-#include <boost/config.hpp>
-#include <boost/detail/workaround.hpp>
-#include <boost/exception/detail/counted_base.hpp>
-#include <boost/intrusive_ptr.hpp>
-#include <typeinfo>
-
 namespace
 boost
     {
- template <class T>
- class shared_ptr;
-
     namespace
     exception_detail
         {
- class error_info_base;
-
- struct
- error_info_container:
- public exception_detail::counted_base
+ template <class T>
+ class
+ refcount_ptr
             {
- 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;
+ public:
+
+ refcount_ptr():
+ px_(0)
+ {
+ }
+
+ ~refcount_ptr()
+ {
+ release();
+ }
+
+ refcount_ptr( refcount_ptr const & x ):
+ px_(x.px_)
+ {
+ add_ref();
+ }
+
+ refcount_ptr &
+ operator=( refcount_ptr const & x )
+ {
+ adopt(x.px_);
+ return *this;
+ }
+
+ void
+ adopt( T * px )
+ {
+ release();
+ px_=px;
+ add_ref();
+ }
+
+ T *
+ get() const
+ {
+ return px_;
+ }
+
+ private:
+
+ T * px_;
+
+ void
+ add_ref()
+ {
+ if( px_ )
+ px_->add_ref();
+ }
+
+ void
+ release()
+ {
+ if( px_ )
+ px_->release();
+ }
             };
         }
 
+ ////////////////////////////////////////////////////////////////////////
+
     template <class Tag,class T>
     class error_info;
 
- template <class E,class Tag,class T>
- E const & operator<<( E const &, error_info<Tag,T> const & );
+ typedef error_info<struct tag_throw_function,char const *> throw_function;
+ typedef error_info<struct tag_throw_file,char const *> throw_file;
+ typedef error_info<struct tag_throw_line,int> throw_line;
 
- template <class ErrorInfo,class E>
- shared_ptr<typename ErrorInfo::value_type const> get_error_info( E const & );
+ template <>
+ class
+ error_info<tag_throw_function,char const *>
+ {
+ public:
+ typedef char const * value_type;
+ value_type v_;
+ explicit
+ error_info( value_type v ):
+ v_(v)
+ {
+ }
+ };
 
+ template <>
     class
- exception
+ error_info<tag_throw_file,char const *>
         {
         public:
+ typedef char const * value_type;
+ value_type v_;
+ explicit
+ error_info( value_type v ):
+ v_(v)
+ {
+ }
+ };
 
- virtual
- char const *
- diagnostic_information() const throw()
+ template <>
+ class
+ error_info<tag_throw_line,int>
+ {
+ public:
+ typedef int value_type;
+ value_type v_;
+ explicit
+ error_info( value_type v ):
+ v_(v)
             {
- return _diagnostic_information(0);
             }
+ };
+
+ template <class E,class Tag,class T>
+ E const & operator<<( E const &, error_info<Tag,T> const & );
 
+ class exception;
+
+ template <class>
+ class shared_ptr;
+
+ namespace
+ exception_detail
+ {
+ class error_info_base;
+ struct type_info_;
+
+ struct
+ error_info_container
+ {
+ virtual char const * diagnostic_information() const = 0;
+ virtual shared_ptr<error_info_base const> get( type_info_ const & ) const = 0;
+ virtual void set( shared_ptr<error_info_base const> const &, type_info_ const & ) = 0;
+ virtual void add_ref() const = 0;
+ virtual void release() const = 0;
+
+ protected:
+
+ virtual
+ ~error_info_container() throw()
+ {
+ }
+ };
+
+ template <class>
+ struct get_info;
+
+ template <>
+ struct get_info<throw_function>;
+
+ template <>
+ struct get_info<throw_file>;
+
+ template <>
+ struct get_info<throw_line>;
+
+ char const * get_diagnostic_information( exception const & );
+ }
+
+ class
+ exception
+ {
         protected:
 
- exception()
+ exception():
+ throw_function_(0),
+ throw_file_(0),
+ throw_line_(-1)
             {
             }
 
- exception( exception const & e ):
- data_(e.data_)
+ virtual ~exception() throw() = 0;
+
+ private:
+
+ template <class E>
+ friend
+ E const &
+ operator<<( E const & x, throw_function y )
             {
+ x.throw_function_=y.v_;
+ return x;
             }
 
- char const *
- _diagnostic_information( char const * std_what ) const throw()
+ template <class E>
+ friend
+ E const &
+ operator<<( E const & x, throw_file y )
             {
- 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();
+ x.throw_file_=y.v_;
+ return x;
             }
 
-#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.
- virtual ~exception() throw()=0;
-#else
-#if BOOST_WORKAROUND( __GNUC__, BOOST_TESTED_AT(4) )
- virtual //Disable bogus GCC warning.
-#endif
- ~exception() throw()
+ template <class E>
+ friend
+ E const &
+ operator<<( E const & x, throw_line y )
             {
+ x.throw_line_=y.v_;
+ return x;
             }
-#endif
-
- private:
 
- shared_ptr<exception_detail::error_info_base const> get( std::type_info const & ) const;
- void set( shared_ptr<exception_detail::error_info_base const> const & ) const;
+ friend char const * exception_detail::get_diagnostic_information( exception const & );
 
         template <class E,class Tag,class T>
         friend E const & operator<<( E const &, error_info<Tag,T> const & );
 
- template <class ErrorInfo,class E>
- friend shared_ptr<typename ErrorInfo::value_type const> get_error_info( E const & );
-
- intrusive_ptr<exception_detail::error_info_container> mutable data_;
+ template <class>
+ friend struct exception_detail::get_info;
+ friend struct exception_detail::get_info<throw_function>;
+ friend struct exception_detail::get_info<throw_file>;
+ friend struct exception_detail::get_info<throw_line>;
+
+ mutable exception_detail::refcount_ptr<exception_detail::error_info_container> data_;
+ mutable char const * throw_function_;
+ mutable char const * throw_file_;
+ mutable int throw_line_;
         };
 
-#if BOOST_WORKAROUND( BOOST_MSVC, BOOST_TESTED_AT(1500) ) //See above.
     inline
     exception::
     ~exception() throw()
         {
         }
-#endif
+
+ ////////////////////////////////////////////////////////////////////////
+
+ namespace
+ exception_detail
+ {
+ template <class T>
+ struct
+ error_info_injector:
+ public T,
+ public exception
+ {
+ explicit
+ error_info_injector( T const & x ):
+ T(x)
+ {
+ }
+
+ ~error_info_injector() throw()
+ {
+ }
+ };
+
+ struct large_size { char c[256]; };
+ large_size dispatch( exception * );
+
+ struct small_size { };
+ small_size dispatch( void * );
+
+ template <class,int>
+ struct enable_error_info_helper;
+
+ template <class T>
+ struct
+ enable_error_info_helper<T,sizeof(large_size)>
+ {
+ typedef T type;
+ };
+
+ template <class T>
+ struct
+ enable_error_info_helper<T,sizeof(small_size)>
+ {
+ typedef error_info_injector<T> type;
+ };
+
+ template <class T>
+ struct
+ enable_error_info_return_type
+ {
+ typedef typename enable_error_info_helper<T,sizeof(dispatch((T*)0))>::type type;
+ };
+ }
+
+ template <class T>
+ inline
+ typename
+ exception_detail::enable_error_info_return_type<T>::type
+ enable_error_info( T const & x )
+ {
+ return typename exception_detail::enable_error_info_return_type<T>::type(x);
+ }
+
+ ////////////////////////////////////////////////////////////////////////
+
+ namespace
+ exception_detail
+ {
+ class
+ clone_base
+ {
+ public:
+
+ virtual clone_base const * clone() const = 0;
+ virtual void rethrow() const = 0;
+
+ virtual
+ ~clone_base() throw()
+ {
+ }
+ };
+
+ inline
+ void
+ copy_boost_exception( exception * a, exception const * b )
+ {
+ *a = *b;
+ }
+
+ inline
+ void
+ copy_boost_exception( void *, void const * )
+ {
+ }
+
+ template <class T>
+ class
+ clone_impl:
+ public T,
+ public clone_base
+ {
+ public:
+
+ explicit
+ clone_impl( T const & x ):
+ T(x)
+ {
+ copy_boost_exception(this,&x);
+ }
+
+ ~clone_impl() throw()
+ {
+ }
+
+ private:
+
+ clone_base const *
+ clone() const
+ {
+ return new clone_impl(*this);
+ }
+
+ void
+ rethrow() const
+ {
+ throw*this;
+ }
+ };
+ }
+
+ template <class T>
+ inline
+ exception_detail::clone_impl<T>
+ enable_current_exception( T const & x )
+ {
+ return exception_detail::clone_impl<T>(x);
+ }
     }
 
 #endif

Modified: branches/proto/v4/boost/exception/info.hpp
==============================================================================
--- branches/proto/v4/boost/exception/info.hpp (original)
+++ branches/proto/v4/boost/exception/info.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -6,108 +6,46 @@
 #ifndef UUID_8D22C4CA9CC811DCAA9133D256D89593
 #define UUID_8D22C4CA9CC811DCAA9133D256D89593
 
-#include <boost/type.hpp>
 #include <boost/exception/exception.hpp>
-#include <boost/exception/error_info.hpp>
 #include <boost/exception/to_string_stub.hpp>
-#include <boost/current_function.hpp>
+#include <boost/exception/detail/error_info_impl.hpp>
 #include <boost/shared_ptr.hpp>
 #include <map>
 
-#define BOOST_ERROR_INFO\
- ::boost::throw_function(BOOST_CURRENT_FUNCTION) <<\
- ::boost::throw_file(__FILE__) <<\
- ::boost::throw_line((int)__LINE__)
-
 namespace
 boost
     {
- typedef error_info<struct tag_throw_function,char const *> throw_function;
- typedef error_info<struct tag_throw_file,char const *> throw_file;
- typedef error_info<struct tag_throw_line,int> throw_line;
-
- namespace
- exception_detail
+ template <class Tag,class T>
+ inline
+ error_info<Tag,T>::
+ error_info( value_type const & value ):
+ value_(value)
         {
- class
- error_info_base
- {
- public:
-
- virtual std::type_info const & tag_typeid() const = 0;
- virtual std::string value_as_string() const = 0;
-
- protected:
-
-#if BOOST_WORKAROUND( __GNUC__, BOOST_TESTED_AT(4) )
-virtual //Disable bogus GCC warning.
-#endif
- ~error_info_base()
- {
- }
- };
         }
 
     template <class Tag,class T>
- class
- error_info:
- public exception_detail::error_info_base
+ inline
+ error_info<Tag,T>::
+ ~error_info() throw()
         {
- public:
-
- typedef T value_type;
-
- error_info( value_type const & value ):
- value_(value)
- {
- }
-
- value_type const &
- value() const
- {
- return value_;
- }
-
- private:
-
- std::type_info const &
- tag_typeid() const
- {
- return typeid(type<Tag>);
- }
-
- std::string
- value_as_string() const
- {
- return to_string_stub(value_);
- }
-
- value_type const value_;
- };
+ }
 
- template <class E,class Tag,class T>
+ template <class Tag,class T>
     inline
- E const &
- operator<<( E const & x, error_info<Tag,T> const & v )
+ char const *
+ error_info<Tag,T>::
+ tag_typeid_name() const
         {
- shared_ptr< error_info<Tag,T> > p( new error_info<Tag,T>(v) );
- x.set(p);
- return x;
+ return type_name<Tag>();
         }
 
- template <class ErrorInfo,class E>
+ template <class Tag,class T>
     inline
- shared_ptr<typename ErrorInfo::value_type const>
- get_error_info( E const & some_exception )
+ std::string
+ error_info<Tag,T>::
+ value_as_string() const
         {
- if( exception const * x = dynamic_cast<exception const *>(&some_exception) )
- if( shared_ptr<exception_detail::error_info_base const> eib = x->get(typeid(ErrorInfo)) )
- {
- BOOST_ASSERT( 0!=dynamic_cast<ErrorInfo const *>(eib.get()) );
- ErrorInfo const * w = static_cast<ErrorInfo const *>(eib.get());
- return shared_ptr<typename ErrorInfo::value_type const>(eib,&w->value());
- }
- return shared_ptr<typename ErrorInfo::value_type const>();
+ return to_string_stub(value_);
         }
 
     namespace
@@ -128,81 +66,57 @@
                 {
                 }
 
+ void
+ set( shared_ptr<error_info_base const> const & x, type_info_ const & typeid_ )
+ {
+ BOOST_ASSERT(x);
+ info_[typeid_] = x;
+ diagnostic_info_str_.clear();
+ }
+
             shared_ptr<error_info_base const>
- get( std::type_info const & ti ) const
+ get( type_info_ const & ti ) const
                 {
- error_info_map::const_iterator i=info_.find(typeinfo(ti));
+ error_info_map::const_iterator i=info_.find(ti);
                 if( info_.end()!=i )
                     {
                     shared_ptr<error_info_base const> const & p = i->second;
- BOOST_ASSERT( typeid(*p)==ti );
+#ifndef BOOST_NO_RTTI
+ BOOST_ASSERT( BOOST_EXCEPTION_DYNAMIC_TYPEID(*p)==ti );
+#endif
                     return p;
                     }
                 return shared_ptr<error_info_base const>();
                 }
 
- void
- set( shared_ptr<error_info_base const> const & x )
- {
- BOOST_ASSERT(x);
- info_[typeinfo(typeid(*x))] = x;
- what_.clear();
- }
-
             char const *
- diagnostic_information( char const * std_what, std::type_info const & exception_type ) const
+ diagnostic_information() const
                 {
- if( what_.empty() )
+ if( diagnostic_info_str_.empty() )
                     {
                     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 )
                         {
                         shared_ptr<error_info_base const> const & x = i->second;
                         tmp += '[';
- tmp += x->tag_typeid().name();
+ tmp += x->tag_typeid_name();
                         tmp += "] = ";
                         tmp += x->value_as_string();
                         tmp += '\n';
                         }
- what_.swap(tmp);
+ diagnostic_info_str_.swap(tmp);
                     }
- return what_.c_str();
+ return diagnostic_info_str_.c_str();
                 }
 
             private:
 
- friend class exception;
+ friend class boost::exception;
 
- struct
- typeinfo
- {
- std::type_info const * type;
-
- explicit
- typeinfo( std::type_info const & t ):
- type(&t)
- {
- }
-
- bool
- operator<( typeinfo const & b ) const
- {
- return 0!=(type->before(*b.type));
- }
- };
-
- typedef std::map< typeinfo, shared_ptr<error_info_base const> > error_info_map;
+ typedef std::map< type_info_, shared_ptr<error_info_base const> > error_info_map;
             error_info_map info_;
- std::string mutable what_;
- int mutable count_;
+ mutable std::string diagnostic_info_str_;
+ mutable int count_;
 
             void
             add_ref() const
@@ -219,25 +133,18 @@
             };
         }
 
+ template <class E,class Tag,class T>
     inline
- void
- exception::
- set( shared_ptr<exception_detail::error_info_base const> const & x ) const
- {
- if( !data_ )
- data_ = intrusive_ptr<exception_detail::error_info_container>(new exception_detail::error_info_container_impl);
- data_->set(x);
- }
-
- inline
- shared_ptr<exception_detail::error_info_base const>
- exception::
- get( std::type_info const & ti ) const
- {
- if( data_ )
- return data_->get(ti);
- else
- return shared_ptr<exception_detail::error_info_base const>();
+ E const &
+ operator<<( E const & x, error_info<Tag,T> const & v )
+ {
+ typedef error_info<Tag,T> error_info_tag_t;
+ shared_ptr<error_info_tag_t> p( new error_info_tag_t(v) );
+ exception_detail::error_info_container * c;
+ if( !(c=x.data_.get()) )
+ x.data_.adopt(c=new exception_detail::error_info_container_impl);
+ c->set(p,BOOST_EXCEPTION_STATIC_TYPEID(error_info_tag_t));
+ return x;
         }
     }
 

Modified: branches/proto/v4/boost/exception_ptr.hpp
==============================================================================
--- branches/proto/v4/boost/exception_ptr.hpp (original)
+++ branches/proto/v4/boost/exception_ptr.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -6,19 +6,80 @@
 #ifndef UUID_FA5836A2CADA11DC8CD47C8555D89593
 #define UUID_FA5836A2CADA11DC8CD47C8555D89593
 
-#include <boost/exception/enable_current_exception.hpp>
 #include <boost/exception/exception.hpp>
-#include <boost/exception/detail/cloning_base.hpp>
+#include <boost/exception/detail/type_info.hpp>
+#include <boost/shared_ptr.hpp>
 #include <stdexcept>
 #include <new>
 
 namespace
 boost
     {
+ class exception_ptr;
+ exception_ptr current_exception();
+ void rethrow_exception( exception_ptr const & );
+
+ class
+ exception_ptr
+ {
+ typedef bool exception_ptr::*unspecified_bool_type;
+ friend exception_ptr current_exception();
+ friend void rethrow_exception( exception_ptr const & );
+
+ shared_ptr<exception_detail::clone_base const> c_;
+ bool bad_alloc_;
+
+ struct
+ bad_alloc_tag
+ {
+ };
+
+ explicit
+ exception_ptr( bad_alloc_tag ):
+ bad_alloc_(true)
+ {
+ }
+
+ explicit
+ exception_ptr( shared_ptr<exception_detail::clone_base const> const & c ):
+ c_(c),
+ bad_alloc_(false)
+ {
+ BOOST_ASSERT(c);
+ }
+
+ public:
+
+ exception_ptr():
+ bad_alloc_(false)
+ {
+ }
+
+ operator unspecified_bool_type() const
+ {
+ return (bad_alloc_ || c_) ? &exception_ptr::bad_alloc_ : 0;
+ }
+
+ friend
+ bool
+ operator==( exception_ptr const & a, exception_ptr const & b )
+ {
+ return a.c_==b.c_ && a.bad_alloc_==b.bad_alloc_;
+ }
+
+ friend
+ bool
+ operator!=( exception_ptr const & a, exception_ptr const & b )
+ {
+ return !(a==b);
+ }
+ };
+
     class
     unknown_exception:
         public exception,
- public std::exception
+ public std::exception,
+ public exception_detail::clone_base
         {
         public:
 
@@ -35,9 +96,21 @@
         ~unknown_exception() throw()
             {
             }
- };
 
- typedef intrusive_ptr<exception_detail::clone_base const> exception_ptr;
+ private:
+
+ clone_base const *
+ clone() const
+ {
+ return new unknown_exception(*this);
+ }
+
+ void
+ rethrow() const
+ {
+ throw*this;
+ }
+ };
 
     namespace
     exception_detail
@@ -46,7 +119,8 @@
         class
         current_exception_std_exception_wrapper:
             public T,
- public boost::exception
+ public boost::exception,
+ public clone_base
             {
             public:
 
@@ -65,41 +139,150 @@
             ~current_exception_std_exception_wrapper() throw()
                 {
                 }
+
+ private:
+
+ clone_base const *
+ clone() const
+ {
+ return new current_exception_std_exception_wrapper(*this);
+ }
+
+ void
+ rethrow() const
+ {
+ throw *this;
+ }
             };
 
+#ifdef BOOST_NO_RTTI
+ template <class T>
+ exception const *
+ get_boost_exception( T const * )
+ {
+ try
+ {
+ throw;
+ }
+ catch(
+ exception & x )
+ {
+ return &x;
+ }
+ catch(...)
+ {
+ return 0;
+ }
+ }
+#else
+ template <class T>
+ exception const *
+ get_boost_exception( T const * x )
+ {
+ return dynamic_cast<exception const *>(x);
+ }
+#endif
+
         template <class T>
         inline
- exception_ptr
+ shared_ptr<clone_base const>
         current_exception_std_exception( T const & e1 )
             {
- if( boost::exception const * e2 = dynamic_cast<boost::exception const *>(&e1) )
- return exception_ptr(exception_detail::make_clone(current_exception_std_exception_wrapper<T>(e1,*e2)));
+ if( boost::exception const * e2 = get_boost_exception(&e1) )
+ return shared_ptr<clone_base const>(new current_exception_std_exception_wrapper<T>(e1,*e2));
             else
- return exception_ptr(exception_detail::make_clone(current_exception_std_exception_wrapper<T>(e1)));
+ return shared_ptr<clone_base const>(new current_exception_std_exception_wrapper<T>(e1));
             }
 
         inline
- exception_ptr
+ shared_ptr<clone_base const>
         current_exception_unknown_exception()
             {
- return exception_ptr(exception_detail::make_clone(unknown_exception()));
+ return shared_ptr<clone_base const>(new unknown_exception());
             }
 
         inline
- exception_ptr
+ shared_ptr<clone_base const>
+ current_exception_unknown_boost_exception( boost::exception const & e )
+ {
+ return shared_ptr<clone_base const>(new unknown_exception(e));
+ }
+
+ inline
+ shared_ptr<clone_base const>
         current_exception_unknown_std_exception( std::exception const & e )
             {
- if( boost::exception const * be = dynamic_cast<boost::exception const *>(&e) )
- return exception_ptr(exception_detail::make_clone(unknown_exception(*be)));
+ if( boost::exception const * be = get_boost_exception(&e) )
+ return current_exception_unknown_boost_exception(*be);
             else
                 return current_exception_unknown_exception();
             }
 
         inline
- exception_ptr
- current_exception_unknown_boost_exception( boost::exception const & e )
+ shared_ptr<clone_base const>
+ current_exception_impl()
             {
- return exception_ptr(exception_detail::make_clone(unknown_exception(e)));
+ try
+ {
+ throw;
+ }
+ catch(
+ exception_detail::clone_base & e )
+ {
+ return shared_ptr<exception_detail::clone_base const>(e.clone());
+ }
+ catch(
+ std::invalid_argument & e )
+ {
+ return exception_detail::current_exception_std_exception(e);
+ }
+ catch(
+ std::out_of_range & e )
+ {
+ return exception_detail::current_exception_std_exception(e);
+ }
+ catch(
+ std::logic_error & e )
+ {
+ return exception_detail::current_exception_std_exception(e);
+ }
+ catch(
+ std::bad_alloc & e )
+ {
+ return exception_detail::current_exception_std_exception(e);
+ }
+#ifndef BOOST_NO_TYPEID
+ catch(
+ std::bad_cast & e )
+ {
+ return exception_detail::current_exception_std_exception(e);
+ }
+ catch(
+ std::bad_typeid & e )
+ {
+ return exception_detail::current_exception_std_exception(e);
+ }
+#endif
+ catch(
+ std::bad_exception & e )
+ {
+ return exception_detail::current_exception_std_exception(e);
+ }
+ catch(
+ std::exception & e )
+ {
+ return exception_detail::current_exception_unknown_std_exception(e);
+ }
+ catch(
+ boost::exception & e )
+ {
+ return exception_detail::current_exception_unknown_boost_exception(e);
+ }
+ catch(
+ ... )
+ {
+ return exception_detail::current_exception_unknown_exception();
+ }
             }
         }
 
@@ -109,65 +292,30 @@
         {
         try
             {
- throw;
+ return exception_ptr(exception_detail::current_exception_impl());
             }
         catch(
- exception_detail::cloning_base & e )
+ std::bad_alloc & )
             {
- exception_detail::clone_base const * c = e.clone();
- BOOST_ASSERT(c!=0);
- return exception_ptr(c);
- }
- catch(
- std::invalid_argument & e )
- {
- return exception_detail::current_exception_std_exception(e);
- }
- catch(
- std::out_of_range & e )
- {
- return exception_detail::current_exception_std_exception(e);
- }
- catch(
- std::logic_error & e )
- {
- return exception_detail::current_exception_std_exception(e);
- }
- catch(
- std::bad_alloc & e )
- {
- return exception_detail::current_exception_std_exception(e);
- }
- catch(
- std::bad_cast & e )
- {
- return exception_detail::current_exception_std_exception(e);
- }
- catch(
- std::bad_typeid & e )
- {
- return exception_detail::current_exception_std_exception(e);
- }
- catch(
- std::bad_exception & e )
- {
- return exception_detail::current_exception_std_exception(e);
- }
- catch(
- std::exception & e )
- {
- return exception_detail::current_exception_unknown_std_exception(e);
- }
- catch(
- boost::exception & e )
- {
- return exception_detail::current_exception_unknown_boost_exception(e);
             }
         catch(
         ... )
             {
- return exception_detail::current_exception_unknown_exception();
+ try
+ {
+ return exception_ptr(exception_detail::current_exception_std_exception(std::bad_exception()));
+ }
+ catch(
+ std::bad_alloc & )
+ {
+ }
+ catch(
+ ... )
+ {
+ BOOST_ASSERT(0);
+ }
             }
+ return exception_ptr(exception_ptr::bad_alloc_tag());
         }
 
     template <class T>
@@ -179,7 +327,8 @@
             {
             throw enable_current_exception(e);
             }
- catch( ... )
+ catch(
+ ... )
             {
             return current_exception();
             }
@@ -189,7 +338,11 @@
     void
     rethrow_exception( exception_ptr const & p )
         {
- p->rethrow();
+ BOOST_ASSERT(p);
+ if( p.bad_alloc_ )
+ throw enable_current_exception(std::bad_alloc());
+ else
+ p.c_->rethrow();
         }
     }
 

Modified: branches/proto/v4/boost/filesystem/convenience.hpp
==============================================================================
--- branches/proto/v4/boost/filesystem/convenience.hpp (original)
+++ branches/proto/v4/boost/filesystem/convenience.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -94,6 +94,7 @@
     inline bool create_directories(const wpath& ph)
       { return create_directories<wpath>(ph); }
 
+# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
     inline std::string extension(const path& ph)
       { return extension<path>(ph); }
     inline std::wstring extension(const wpath& ph)
@@ -108,6 +109,7 @@
       { return change_extension<path>( ph, new_ex ); }
     inline wpath change_extension( const wpath & ph, const std::wstring& new_ex )
       { return change_extension<wpath>( ph, new_ex ); }
+# endif
 
 # endif
 

Modified: branches/proto/v4/boost/filesystem/operations.hpp
==============================================================================
--- branches/proto/v4/boost/filesystem/operations.hpp (original)
+++ branches/proto/v4/boost/filesystem/operations.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -121,10 +121,6 @@
 
     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;
 
@@ -234,7 +230,10 @@
 # endif
 
       template<class Path>
- unsigned long remove_all_aux( const Path & ph );
+ bool remove_aux( const Path & ph, file_status f );
+
+ template<class Path>
+ unsigned long remove_all_aux( const Path & ph, file_status f );
 
     } // namespace detail
 
@@ -474,19 +473,24 @@
       return ec;
     }
 
- BOOST_FS_FUNC(void) remove( const Path & ph, system::error_code & ec = detail::throws )
+ BOOST_FS_FUNC(bool) remove( const Path & ph )
     {
- system::error_code error( detail::remove_api(ph.external_file_string()) );
- if ( error && &ec == &detail::throws )
+ system::error_code ec;
+ file_status f = symlink_status( ph, ec );
+ if ( ec )
         boost::throw_exception( basic_filesystem_error<Path>(
- "boost::filesystem::remove", ph, error ) );
- ec = error;
+ "boost::filesystem::remove", ph, ec ) );
+ return detail::remove_aux( ph, f );
     }
 
     BOOST_FS_FUNC(unsigned long) remove_all( const Path & ph )
     {
- return exists( ph )|| is_symlink( ph )
- ? detail::remove_all_aux( ph ) : 0;
+ system::error_code ec;
+ file_status f = symlink_status( ph, ec );
+ if ( ec )
+ boost::throw_exception( basic_filesystem_error<Path>(
+ "boost::filesystem::remove_all", ph, ec ) );
+ return exists( f ) ? detail::remove_all_aux( ph, f ) : 0;
     }
 
     BOOST_FS_FUNC(void) rename( const Path & from_path, const Path & to_path )
@@ -712,8 +716,10 @@
       const wpath & from_ph, system::error_code & ec )
       { return create_symlink<wpath>( to_ph, from_ph, ec ); }
 
- inline void remove( const path & ph ) { remove<path>( ph ); }
- inline void remove( const wpath & ph ) { remove<wpath>( ph ); }
+ inline bool remove( const path & ph )
+ { return remove<path>( ph ); }
+ inline bool remove( const wpath & ph )
+ { return remove<wpath>( ph ); }
 
     inline unsigned long remove_all( const path & ph )
       { return remove_all<path>( ph ); }
@@ -762,20 +768,39 @@
     namespace detail
     {
       template<class Path>
- unsigned long remove_all_aux( const Path & ph )
+ bool remove_aux( const Path & ph, file_status f )
+ {
+ if ( exists( f ) )
+ {
+ system::error_code ec = remove_api( ph.external_file_string() );
+ if ( ec )
+ boost::throw_exception( basic_filesystem_error<Path>(
+ "boost::filesystem::remove", ph, ec ) );
+ return true;
+ }
+ return false;
+ }
+
+ template<class Path>
+ unsigned long remove_all_aux( const Path & ph, file_status f )
       {
         static const boost::filesystem::basic_directory_iterator<Path> end_itr;
         unsigned long count = 1;
- if ( !boost::filesystem::is_symlink( ph ) // don't recurse symbolic links
- && boost::filesystem::is_directory( ph ) )
+ if ( !boost::filesystem::is_symlink( f ) // don't recurse symbolic links
+ && boost::filesystem::is_directory( f ) )
         {
           for ( boost::filesystem::basic_directory_iterator<Path> itr( ph );
                 itr != end_itr; ++itr )
           {
- count += remove_all_aux( itr->path() );
+ boost::system::error_code ec;
+ boost::filesystem::file_status fn = boost::filesystem::symlink_status( itr->path(), ec );
+ if ( ec )
+ boost::throw_exception( basic_filesystem_error<Path>(
+ "boost::filesystem:remove_all", ph, ec ) );
+ count += remove_all_aux( itr->path(), fn );
           }
         }
- boost::filesystem::remove( ph );
+ remove_aux( ph, f );
         return count;
       }
 
@@ -1020,12 +1045,18 @@
 
       void replace_filename( const string_type & s,
         file_status st, file_status symlink_st )
- {
- m_path.remove_filename();
- m_path /= s;
- m_status = st;
- m_symlink_status = symlink_st;
- }
+ {
+ m_path.remove_filename();
+ m_path /= s;
+ m_status = st;
+ m_symlink_status = symlink_st;
+ }
+
+# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
+ void replace_leaf( const string_type & s,
+ file_status st, file_status symlink_st )
+ { replace_filename( s, st, symlink_st ); }
+# endif
 
       const Path & path() const { return m_path; }
       file_status status() const;
@@ -1042,6 +1073,10 @@
       {
         return path().filename();
       }
+ typename Path::string_type leaf() const
+ {
+ return path().filename();
+ }
       typename Path::string_type string() const
       {
         return path().string();

Modified: branches/proto/v4/boost/filesystem/path.hpp
==============================================================================
--- branches/proto/v4/boost/filesystem/path.hpp (original)
+++ branches/proto/v4/boost/filesystem/path.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -229,6 +229,8 @@
 # ifndef BOOST_FILESYSTEM_NO_DEPRECATED
       string_type leaf() const { return filename(); }
       basic_path branch_path() const { return parent_path(); }
+ bool has_leaf() const { return !m_path.empty(); }
+ bool has_branch_path() const { return !parent_path().empty(); }
 # endif
 
       bool empty() const { return m_path.empty(); } // name consistent with std containers
@@ -237,7 +239,7 @@
       bool has_root_name() const;
       bool has_root_directory() const;
       bool has_relative_path() const { return !relative_path().empty(); }
- bool has_filename() const { return !m_path.empty(); }
+ bool has_filename() const { return !m_path.empty(); }
       bool has_parent_path() const { return !parent_path().empty(); }
 
       // iterators

Modified: branches/proto/v4/boost/functional/detail/float_functions.hpp
==============================================================================
--- branches/proto/v4/boost/functional/detail/float_functions.hpp (original)
+++ branches/proto/v4/boost/functional/detail/float_functions.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -61,13 +61,9 @@
 
 // Dinkumware.
 #elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER)
-// Overloaded float functions were probably introduced in an earlier version
-// than this.
-# if defined(_CPPLIB_VER) && (_CPPLIB_VER >= 402)
-# define BOOST_HASH_USE_OVERLOAD_FLOAT_FUNCS
-# else
-# define BOOST_HASH_USE_C99_FLOAT_FUNCS
-# endif
+// I'm not sure which versions of Dinkumware have the C++ overloads
+// but they all seem to have the C99 float functions so I'll use them.
+# define BOOST_HASH_USE_C99_FLOAT_FUNCS
 
 // Digital Mars
 #elif defined(__DMC__)

Modified: branches/proto/v4/boost/fusion/include/end.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/include/end.hpp (original)
+++ branches/proto/v4/boost/fusion/include/end.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -4,8 +4,8 @@
     Distributed under the 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_INCLUDE_BEGIN)
-#define FUSION_INCLUDE_BEGIN
+#if !defined(FUSION_INCLUDE_END)
+#define FUSION_INCLUDE_END
 
 #include <boost/fusion/sequence/intrinsic/end.hpp>
 

Deleted: branches/proto/v4/boost/fusion/tuple/detail/tuple_forward_ctor.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/tuple/detail/tuple_forward_ctor.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
+++ (empty file)
@@ -1,39 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 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)
-==============================================================================*/
-#ifndef BOOST_PP_IS_ITERATING
-#if !defined(FUSION_TUPLE_FORWARD_CTOR_10032005_0815)
-#define FUSION_TUPLE_FORWARD_CTOR_10032005_0815
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-
-#define BOOST_PP_FILENAME_1 \
- <boost/fusion/tuple/detail/tuple_forward_ctor.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
-#include BOOST_PP_ITERATE()
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
-#if N == 1
- explicit
-#endif
- tuple(BOOST_PP_ENUM_BINARY_PARAMS(
- N, typename detail::call_param<T, >::type _))
- : base_type(BOOST_PP_ENUM_PARAMS(N, _)) {}
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
-

Modified: branches/proto/v4/boost/fusion/tuple/tuple.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/tuple/tuple.hpp (original)
+++ branches/proto/v4/boost/fusion/tuple/tuple.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -1,7 +1,7 @@
 /*=============================================================================
     Copyright (c) 2005 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_TUPLE_10032005_0810)
@@ -16,6 +16,7 @@
 #include <boost/fusion/sequence/io.hpp>
 #include <boost/utility/enable_if.hpp>
 #include <boost/type_traits/is_const.hpp>
+#include <utility>
 
 namespace boost { namespace fusion
 {
@@ -23,35 +24,50 @@
     struct tuple : vector<BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)>
     {
         typedef vector<
- BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)>
+ BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)>
         base_type;
 
         tuple()
             : base_type() {}
-
- template <typename Sequence>
- tuple(Sequence const& rhs)
+
+ tuple(tuple const& rhs)
+ : base_type(rhs) {}
+
+ template <typename U1, typename U2>
+ tuple(std::pair<U1, U2> const& rhs)
             : base_type(rhs) {}
 
- #include <boost/fusion/tuple/detail/tuple_forward_ctor.hpp>
+ #include <boost/fusion/tuple/detail/tuple_expand.hpp>
 
         template <typename T>
- tuple&
- operator=(T const& rhs)
+ tuple& operator=(T const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+
+ tuple& operator=(tuple const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+
+ template <typename U1, typename U2>
+ tuple& operator=(std::pair<U1, U2> const& rhs)
         {
             base_type::operator=(rhs);
             return *this;
         }
     };
 
- template <typename Tuple>
+ template <typename Tuple>
     struct tuple_size : result_of::size<Tuple> {};
 
- template <int N, typename Tuple>
+ template <int N, typename Tuple>
     struct tuple_element : result_of::value_at_c<Tuple, N> {};
 
     template <int N, typename Tuple>
- inline typename
+ inline typename
         lazy_disable_if<
             is_const<Tuple>
           , result_of::at_c<Tuple, N>

Modified: branches/proto/v4/boost/limits.hpp
==============================================================================
--- branches/proto/v4/boost/limits.hpp (original)
+++ branches/proto/v4/boost/limits.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -6,7 +6,7 @@
 //
 // use this header as a workaround for missing <limits>
 
-// See http://www.boost.org/libs/utility/limits.html for documentation.
+// See http://www.boost.org/libs/compatibility/index.html for documentation.
 
 #ifndef BOOST_LIMITS
 #define BOOST_LIMITS

Modified: branches/proto/v4/boost/math/concepts/std_real_concept.hpp
==============================================================================
--- branches/proto/v4/boost/math/concepts/std_real_concept.hpp (original)
+++ branches/proto/v4/boost/math/concepts/std_real_concept.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -18,7 +18,6 @@
 
 #include <boost/config.hpp>
 #include <boost/limits.hpp>
-#include <boost/math/tools/precision.hpp>
 #include <boost/math/policies/policy.hpp>
 #include <boost/math/special_functions/math_fwd.hpp>
 
@@ -316,7 +315,11 @@
 }
 
 } // namespace concepts
+}}
+
+#include <boost/math/tools/precision.hpp>
 
+namespace boost{ namespace math{
 namespace tools
 {
 
@@ -374,3 +377,4 @@
 #endif // BOOST_MATH_STD_REAL_CONCEPT_HPP
 
 
+

Modified: branches/proto/v4/boost/math/special_functions/acosh.hpp
==============================================================================
--- branches/proto/v4/boost/math/special_functions/acosh.hpp (original)
+++ branches/proto/v4/boost/math/special_functions/acosh.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -1,6 +1,7 @@
 // boost asinh.hpp header file
 
 // (C) Copyright Eric Ford 2001 & Hubert Holin.
+// (C) Copyright John Maddock 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,6 +20,7 @@
 #include <boost/math/tools/precision.hpp>
 #include <boost/math/policies/error_handling.hpp>
 #include <boost/math/special_functions/math_fwd.hpp>
+#include <boost/math/special_functions/log1p.hpp>
 
 // This is the inverse of the hyperbolic cosine function.
 
@@ -42,68 +44,66 @@
         template<typename T, typename Policy>
         inline T acosh_imp(const T x, const Policy& pol)
         {
- using ::std::abs;
- using ::std::sqrt;
- using ::std::log;
+ BOOST_MATH_STD_USING
             
- T const one = static_cast<T>(1);
- T const two = static_cast<T>(2);
-
- static T const taylor_2_bound = sqrt(tools::epsilon<T>());
- static T const taylor_n_bound = sqrt(taylor_2_bound);
- static T const upper_taylor_2_bound = one/taylor_2_bound;
-
- if(x < one)
+ if(x < 1)
             {
                return policies::raise_domain_error<T>(
                   "boost::math::acosh<%1%>(%1%)",
                   "acosh requires x >= 1, but got x = %1%.", x, pol);
             }
- else if (x >= taylor_n_bound)
+ else if ((x - 1) >= tools::root_epsilon<T>())
             {
- if (x > upper_taylor_2_bound)
+ if (x > 1 / tools::root_epsilon<T>())
                 {
+ // http://functions.wolfram.com/ElementaryFunctions/ArcCosh/06/01/06/01/0001/
                     // approximation by laurent series in 1/x at 0+ order from -1 to 0
- return( log( x*two) );
+ return( log( x * 2) );
+ }
+ else if(x < 1.5f)
+ {
+ // This is just a rearrangement of the standard form below
+ // devised to minimse loss of precision when x ~ 1:
+ T y = x - 1;
+ return boost::math::log1p(y + sqrt(y * y + 2 * y), pol);
                 }
                 else
                 {
- return( log( x + sqrt(x*x-one) ) );
+ // http://functions.wolfram.com/ElementaryFunctions/ArcCosh/02/
+ return( log( x + sqrt(x * x - 1) ) );
                 }
             }
             else
             {
- T y = sqrt(x-one);
+ // see http://functions.wolfram.com/ElementaryFunctions/ArcCosh/06/01/04/01/0001/
+ T y = x - 1;
                 
                 // approximation by taylor series in y at 0 up to order 2
- T result = y;
-
- if (y >= taylor_2_bound)
- {
- T y3 = y*y*y;
-
- // approximation by taylor series in y at 0 up to order 4
- result -= y3/static_cast<T>(12);
- }
-
- return(sqrt(static_cast<T>(2))*result);
+ T result = sqrt(2 * y) * (1 + y /12 + 3 * y * y / 160);
+ return result;
             }
         }
        }
 
         template<typename T, typename Policy>
- inline typename tools::promote_args<T>::type acosh(const T x, const Policy& pol)
+ inline typename tools::promote_args<T>::type acosh(T x, const Policy&)
         {
- typedef typename tools::promote_args<T>::type result_type;
- return detail::acosh_imp(
- static_cast<result_type>(x), pol);
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+ return policies::checked_narrowing_cast<result_type, forwarding_policy>(
+ detail::acosh_imp(static_cast<value_type>(x), forwarding_policy()),
+ "boost::math::acosh<%1%>(%1%)");
         }
         template<typename T>
- inline typename tools::promote_args<T>::type acosh(const T x)
+ inline typename tools::promote_args<T>::type acosh(T x)
         {
- typedef typename tools::promote_args<T>::type result_type;
- return detail::acosh_imp(
- static_cast<result_type>(x), policies::policy<>());
+ return boost::math::acosh(x, policies::policy<>());
         }
 
     }
@@ -112,5 +112,3 @@
 #endif /* BOOST_ACOSH_HPP */
 
 
-
-

Modified: branches/proto/v4/boost/math/special_functions/asinh.hpp
==============================================================================
--- branches/proto/v4/boost/math/special_functions/asinh.hpp (original)
+++ branches/proto/v4/boost/math/special_functions/asinh.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -1,6 +1,7 @@
 // boost asinh.hpp header file
 
 // (C) Copyright Eric Ford & Hubert Holin 2001.
+// (C) Copyright John Maddock 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,6 +20,8 @@
 #include <boost/config.hpp>
 #include <boost/math/tools/precision.hpp>
 #include <boost/math/special_functions/math_fwd.hpp>
+#include <boost/math/special_functions/sqrt1pm1.hpp>
+#include <boost/math/special_functions/log1p.hpp>
 
 // This is the inverse of the hyperbolic sine function.
 
@@ -38,51 +41,41 @@
         using ::std::numeric_limits;
 #endif
         
- template<typename T>
- inline T asinh_imp(const T x)
+ template<typename T, class Policy>
+ inline T asinh_imp(const T x, const Policy& pol)
         {
- using ::std::abs;
- using ::std::sqrt;
- using ::std::log;
-
- T const one = static_cast<T>(1);
- T const two = static_cast<T>(2);
-
- static T const taylor_2_bound = sqrt(tools::epsilon<T>());
- static T const taylor_n_bound = sqrt(taylor_2_bound);
- static T const upper_taylor_2_bound = one/taylor_2_bound;
- static T const upper_taylor_n_bound = one/taylor_n_bound;
+ BOOST_MATH_STD_USING
             
- if (x >= +taylor_n_bound)
+ if (x >= tools::forth_root_epsilon<T>())
             {
- if (x > upper_taylor_n_bound)
+ if (x > 1 / tools::root_epsilon<T>())
+ {
+ // http://functions.wolfram.com/ElementaryFunctions/ArcSinh/06/01/06/01/0001/
+ // approximation by laurent series in 1/x at 0+ order from -1 to 1
+ return log(x * 2) + 1/ (4 * x * x);
+ }
+ else if(x < 0.5f)
                 {
- if (x > upper_taylor_2_bound)
- {
- // approximation by laurent series in 1/x at 0+ order from -1 to 0
- return( log( x * two) );
- }
- else
- {
- // approximation by laurent series in 1/x at 0+ order from -1 to 1
- return( log( x*two + (one/(x*two)) ) );
- }
+ // As below, but rearranged to preserve digits:
+ return boost::math::log1p(x + boost::math::sqrt1pm1(x * x, pol), pol);
                 }
                 else
                 {
- return( log( x + sqrt(x*x+one) ) );
+ // http://functions.wolfram.com/ElementaryFunctions/ArcSinh/02/
+ return( log( x + sqrt(x*x+1) ) );
                 }
             }
- else if (x <= -taylor_n_bound)
+ else if (x <= -tools::forth_root_epsilon<T>())
             {
                 return(-asinh(-x));
             }
             else
             {
+ // http://functions.wolfram.com/ElementaryFunctions/ArcSinh/06/01/03/01/0001/
                 // approximation by taylor series in x at 0 up to order 2
                 T result = x;
                 
- if (abs(x) >= taylor_2_bound)
+ if (abs(x) >= tools::root_epsilon<T>())
                 {
                     T x3 = x*x*x;
                     
@@ -96,18 +89,24 @@
        }
 
         template<typename T>
- inline typename tools::promote_args<T>::type asinh(const T x)
+ inline typename tools::promote_args<T>::type asinh(T x)
         {
- typedef typename tools::promote_args<T>::type result_type;
- return detail::asinh_imp(
- static_cast<result_type>(x));
+ return boost::math::asinh(x, policies::policy<>());
         }
         template<typename T, typename Policy>
- inline typename tools::promote_args<T>::type asinh(const T x, const Policy&)
+ inline typename tools::promote_args<T>::type asinh(T x, const Policy&)
         {
- typedef typename tools::promote_args<T>::type result_type;
- return detail::asinh_imp(
- static_cast<result_type>(x));
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+ return policies::checked_narrowing_cast<result_type, forwarding_policy>(
+ detail::asinh_imp(static_cast<value_type>(x), forwarding_policy()),
+ "boost::math::asinh<%1%>(%1%)");
         }
 
     }

Modified: branches/proto/v4/boost/math/special_functions/atanh.hpp
==============================================================================
--- branches/proto/v4/boost/math/special_functions/atanh.hpp (original)
+++ branches/proto/v4/boost/math/special_functions/atanh.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -1,6 +1,7 @@
 // boost atanh.hpp header file
 
 // (C) Copyright Hubert Holin 2001.
+// (C) Copyright John Maddock 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 +21,7 @@
 #include <boost/math/tools/precision.hpp>
 #include <boost/math/policies/error_handling.hpp>
 #include <boost/math/special_functions/math_fwd.hpp>
+#include <boost/math/special_functions/log1p.hpp>
 
 // This is the inverse of the hyperbolic tangent function.
 
@@ -45,52 +47,45 @@
         template<typename T, typename Policy>
         inline T atanh_imp(const T x, const Policy& pol)
         {
- using ::std::abs;
- using ::std::sqrt;
- using ::std::log;
-
- using ::std::numeric_limits;
-
- T const one = static_cast<T>(1);
- T const two = static_cast<T>(2);
-
- static T const taylor_2_bound = sqrt(tools::epsilon<T>());
- static T const taylor_n_bound = sqrt(taylor_2_bound);
-
+ BOOST_MATH_STD_USING
             static const char* function = "boost::math::atanh<%1%>(%1%)";
             
- if (x < -one)
+ if(x < -1)
             {
                return policies::raise_domain_error<T>(
                   function,
                   "atanh requires x >= -1, but got x = %1%.", x, pol);
             }
- else if (x < -one + tools::epsilon<T>())
+ else if(x < -1 + tools::epsilon<T>())
             {
                // -Infinity:
                return -policies::raise_overflow_error<T>(function, 0, pol);
             }
- else if (x > one - tools::epsilon<T>())
+ else if(x > 1 - tools::epsilon<T>())
             {
                // Infinity:
                return -policies::raise_overflow_error<T>(function, 0, pol);
             }
- else if (x > +one)
+ else if(x > 1)
             {
                return policies::raise_domain_error<T>(
                   function,
                   "atanh requires x <= 1, but got x = %1%.", x, pol);
             }
- else if (abs(x) >= taylor_n_bound)
+ else if(abs(x) >= tools::forth_root_epsilon<T>())
             {
- return(log( (one + x) / (one - x) ) / two);
+ // http://functions.wolfram.com/ElementaryFunctions/ArcTanh/02/
+ if(abs(x) < 0.5f)
+ return (boost::math::log1p(x, pol) - boost::math::log1p(-x, pol)) / 2;
+ return(log( (1 + x) / (1 - x) ) / 2);
             }
             else
             {
+ // http://functions.wolfram.com/ElementaryFunctions/ArcTanh/06/01/03/01/
                 // approximation by taylor series in x at 0 up to order 2
                 T result = x;
                 
- if (abs(x) >= taylor_2_bound)
+ if (abs(x) >= tools::root_epsilon<T>())
                 {
                     T x3 = x*x*x;
                     
@@ -104,18 +99,24 @@
        }
 
         template<typename T, typename Policy>
- inline typename tools::promote_args<T>::type atanh(const T x, const Policy& pol)
+ inline typename tools::promote_args<T>::type atanh(T x, const Policy&)
         {
- typedef typename tools::promote_args<T>::type result_type;
- return detail::atanh_imp(
- static_cast<result_type>(x), pol);
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+ return policies::checked_narrowing_cast<result_type, forwarding_policy>(
+ detail::atanh_imp(static_cast<value_type>(x), forwarding_policy()),
+ "boost::math::atanh<%1%>(%1%)");
         }
         template<typename T>
- inline typename tools::promote_args<T>::type atanh(const T x)
+ inline typename tools::promote_args<T>::type atanh(T x)
         {
- typedef typename tools::promote_args<T>::type result_type;
- return detail::atanh_imp(
- static_cast<result_type>(x), policies::policy<>());
+ return boost::math::atanh(x, policies::policy<>());
         }
 
     }

Modified: branches/proto/v4/boost/math/special_functions/math_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/math/special_functions/math_fwd.hpp (original)
+++ branches/proto/v4/boost/math/special_functions/math_fwd.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -531,22 +531,22 @@
 
    // inverse hyperbolics:
    template<typename T>
- typename tools::promote_args<T>::type asinh(const T x);
+ typename tools::promote_args<T>::type asinh(T x);
 
    template<typename T, class Policy>
- typename tools::promote_args<T>::type asinh(const T x, const Policy&);
+ typename tools::promote_args<T>::type asinh(T x, const Policy&);
 
    template<typename T>
- typename tools::promote_args<T>::type acosh(const T x);
+ typename tools::promote_args<T>::type acosh(T x);
 
    template<typename T, class Policy>
- typename tools::promote_args<T>::type acosh(const T x, const Policy&);
+ typename tools::promote_args<T>::type acosh(T x, const Policy&);
 
    template<typename T>
- typename tools::promote_args<T>::type atanh(const T x);
+ typename tools::promote_args<T>::type atanh(T x);
 
    template<typename T, class Policy>
- typename tools::promote_args<T>::type atanh(const T x, const Policy&);
+ typename tools::promote_args<T>::type atanh(T x, const Policy&);
 
    namespace detail{
 

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -23,7 +23,7 @@
 #include <boost/math/tools/user.hpp>
 #include <boost/math/special_functions/detail/round_fwd.hpp>
 
-#if defined(__CYGWIN__) || defined(__FreeBSD__) || defined(__hppa)
+#if defined(__CYGWIN__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__hppa)
 # define BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
 #endif
 #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582))

Modified: branches/proto/v4/boost/math/tools/precision.hpp
==============================================================================
--- branches/proto/v4/boost/math/tools/precision.hpp (original)
+++ branches/proto/v4/boost/math/tools/precision.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -232,6 +232,88 @@
 #endif
 }
 
+namespace detail{
+
+template <class T>
+inline T root_epsilon_imp(const mpl::int_<24>&)
+{
+ return static_cast<T>(0.00034526698300124390839884978618400831996329879769945L);
+}
+
+template <class T>
+inline T root_epsilon_imp(const T*, const mpl::int_<53>&)
+{
+ return static_cast<T>(0.1490116119384765625e-7L);
+}
+
+template <class T>
+inline T root_epsilon_imp(const T*, const mpl::int_<64>&)
+{
+ return static_cast<T>(0.32927225399135962333569506281281311031656150598474e-9L);
+}
+
+template <class T>
+inline T root_epsilon_imp(const T*, const mpl::int_<113>&)
+{
+ return static_cast<T>(0.1387778780781445675529539585113525390625e-16L);
+}
+
+template <class T, class Tag>
+inline T root_epsilon_imp(const T*, const Tag&)
+{
+ BOOST_MATH_STD_USING
+ static const T r_eps = sqrt(tools::epsilon<T>());
+ return r_eps;
+}
+
+template <class T>
+inline T forth_root_epsilon_imp(const T*, const mpl::int_<24>&)
+{
+ return static_cast<T>(0.018581361171917516667460937040007436176452688944747L);
+}
+
+template <class T>
+inline T forth_root_epsilon_imp(const T*, const mpl::int_<53>&)
+{
+ return static_cast<T>(0.0001220703125L);
+}
+
+template <class T>
+inline T forth_root_epsilon_imp(const T*, const mpl::int_<64>&)
+{
+ return static_cast<T>(0.18145860519450699870567321328132261891067079047605e-4L);
+}
+
+template <class T>
+inline T forth_root_epsilon_imp(const T*, const mpl::int_<113>&)
+{
+ return static_cast<T>(0.37252902984619140625e-8L);
+}
+
+template <class T, class Tag>
+inline T forth_root_epsilon_imp(const T*, const Tag&)
+{
+ BOOST_MATH_STD_USING
+ static const T r_eps = sqrt(sqrt(tools::epsilon<T>()));
+ return r_eps;
+}
+
+}
+
+template <class T>
+inline T root_epsilon()
+{
+ typedef mpl::int_<std::numeric_limits<T>::digits> tag_type;
+ return detail::root_epsilon_imp(static_cast<T const*>(0), tag_type());
+}
+
+template <class T>
+inline T forth_root_epsilon()
+{
+ typedef mpl::int_<std::numeric_limits<T>::digits> tag_type;
+ return detail::forth_root_epsilon_imp(static_cast<T const*>(0), tag_type());
+}
+
 } // namespace tools
 } // namespace math
 } // namespace boost

Modified: branches/proto/v4/boost/math/tools/test.hpp
==============================================================================
--- branches/proto/v4/boost/math/tools/test.hpp (original)
+++ branches/proto/v4/boost/math/tools/test.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -151,9 +151,19 @@
 }
 #endif
 
+template <class T>
+void set_output_precision(T)
+{
+ if(std::numeric_limits<T>::digits10)
+ {
+ std::cout << std::setprecision(std::numeric_limits<T>::digits10 + 2);
+ }
+}
+
 template <class Seq>
 void print_row(const Seq& row)
 {
+ set_output_precision(row[0]);
    for(unsigned i = 0; i < row.size(); ++i)
    {
       if(i)

Modified: branches/proto/v4/boost/math/tools/test_data.hpp
==============================================================================
--- branches/proto/v4/boost/math/tools/test_data.hpp (original)
+++ branches/proto/v4/boost/math/tools/test_data.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -328,8 +328,14 @@
 template <class T>
 inline float test_data<T>::truncate_to_float(float const * pf)
 {
- extern_val = *pf;
- return *pf;
+ BOOST_MATH_STD_USING
+ int expon;
+ float f = floor(ldexp(frexp(*pf, &expon), 22));
+ f = ldexp(f, expon - 22);
+ return f;
+
+ //extern_val = *pf;
+ //return *pf;
 }
 
 template <class T>

Modified: branches/proto/v4/boost/mpi/collectives/all_gather.hpp
==============================================================================
--- branches/proto/v4/boost/mpi/collectives/all_gather.hpp (original)
+++ branches/proto/v4/boost/mpi/collectives/all_gather.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -40,10 +40,7 @@
   all_gather_impl(const communicator& comm, const T* in_values, int n,
                   T* out_values, mpl::false_)
   {
- std::cerr << comm.rank() << ": gathering " << n << " values to root 0..." << std::endl;
- std::cerr << in_values << ", " << out_values << std::endl;
     gather(comm, in_values, n, out_values, 0);
- std::cerr << comm.rank() << ": broadcasting from root 0..." << std::endl;
     broadcast(comm, out_values, comm.size() * n, 0);
   }
 } // end namespace detail

Modified: branches/proto/v4/boost/mpi/detail/binary_buffer_iprimitive.hpp
==============================================================================
--- branches/proto/v4/boost/mpi/detail/binary_buffer_iprimitive.hpp (original)
+++ branches/proto/v4/boost/mpi/detail/binary_buffer_iprimitive.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -105,8 +105,6 @@
 
     void load_impl(void * p, int l)
     {
- if (position+l > static_cast<int>(buffer_.size()))
- std::cerr << position << " " << l << " " << buffer_.size() << "\n";
       assert(position+l<=static_cast<int>(buffer_.size()));
       std::memcpy(p,&buffer_[position],l);
       position += l;

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -33,21 +33,21 @@
  */
 
 template<int N>struct uintptr_candidates;
-template<>struct uintptr_candidates<-1>{typedef unsigned int type;};
-template<>struct uintptr_candidates<0> {typedef unsigned int type;};
-template<>struct uintptr_candidates<1> {typedef unsigned short type;};
-template<>struct uintptr_candidates<2> {typedef unsigned long type;};
+template<>struct uintptr_candidates<-1>{typedef unsigned int type;};
+template<>struct uintptr_candidates<0> {typedef unsigned int type;};
+template<>struct uintptr_candidates<1> {typedef unsigned short type;};
+template<>struct uintptr_candidates<2> {typedef unsigned long type;};
 
 #if defined(BOOST_HAS_LONG_LONG)
-template<>struct uintptr_candidates<3> {typedef unsigned long long type;};
+template<>struct uintptr_candidates<3> {typedef boost::ulong_long_type type;};
 #else
-template<>struct uintptr_candidates<3> {typedef unsigned int type;};
+template<>struct uintptr_candidates<3> {typedef unsigned int type;};
 #endif
 
 #if defined(BOOST_HAS_MS_INT64)
-template<>struct uintptr_candidates<4> {typedef unsigned __int64 type;};
+template<>struct uintptr_candidates<4> {typedef unsigned __int64 type;};
 #else
-template<>struct uintptr_candidates<4> {typedef unsigned int type;};
+template<>struct uintptr_candidates<4> {typedef unsigned int type;};
 #endif
 
 struct uintptr_aux

Modified: branches/proto/v4/boost/numeric/ublas/functional.hpp
==============================================================================
--- branches/proto/v4/boost/numeric/ublas/functional.hpp (original)
+++ branches/proto/v4/boost/numeric/ublas/functional.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -1722,6 +1722,7 @@
         bool other (size_type /* i */, size_type /* j */) {
             return true;
         }
+ // FIXME: this should not be used at all
         static
         BOOST_UBLAS_INLINE
         size_type restrict1 (size_type i, size_type j) {
@@ -1744,6 +1745,84 @@
         }
     };
 
+ namespace detail {
+ template < class L >
+ struct transposed_structure {
+ typedef typename L::size_type size_type;
+
+ template<class LAYOUT>
+ static
+ BOOST_UBLAS_INLINE
+ size_type packed_size (LAYOUT l, size_type size_i, size_type size_j) {
+ return L::packed_size(l, size_j, size_i);
+ }
+
+ static
+ BOOST_UBLAS_INLINE
+ bool zero (size_type i, size_type j) {
+ return L::zero(j, i);
+ }
+ static
+ BOOST_UBLAS_INLINE
+ bool one (size_type i, size_type j) {
+ return L::one(j, i);
+ }
+ static
+ BOOST_UBLAS_INLINE
+ bool other (size_type i, size_type j) {
+ return L::other(j, i);
+ }
+ template<class LAYOUT>
+ static
+ BOOST_UBLAS_INLINE
+ size_type element (LAYOUT l, size_type i, size_type size_i, size_type j, size_type size_j) {
+ return L::element(l, j, size_j, i, size_i);
+ }
+
+ static
+ BOOST_UBLAS_INLINE
+ size_type restrict1 (size_type i, size_type j, size_type size1, size_type size2) {
+ return L::restrict2(j, i, size2, size1);
+ }
+ static
+ BOOST_UBLAS_INLINE
+ size_type restrict2 (size_type i, size_type j, size_type size1, size_type size2) {
+ return L::restrict1(j, i, size2, size1);
+ }
+ static
+ BOOST_UBLAS_INLINE
+ size_type mutable_restrict1 (size_type i, size_type j, size_type size1, size_type size2) {
+ return L::mutable_restrict2(j, i, size2, size1);
+ }
+ static
+ BOOST_UBLAS_INLINE
+ size_type mutable_restrict2 (size_type i, size_type j, size_type size1, size_type size2) {
+ return L::mutable_restrict1(j, i, size2, size1);
+ }
+
+ static
+ BOOST_UBLAS_INLINE
+ size_type global_restrict1 (size_type index1, size_type size1, size_type index2, size_type size2) {
+ return L::global_restrict2(index2, size2, index1, size1);
+ }
+ static
+ BOOST_UBLAS_INLINE
+ size_type global_restrict2 (size_type index1, size_type size1, size_type index2, size_type size2) {
+ return L::global_restrict1(index2, size2, index1, size1);
+ }
+ static
+ BOOST_UBLAS_INLINE
+ size_type global_mutable_restrict1 (size_type index1, size_type size1, size_type index2, size_type size2) {
+ return L::global_mutable_restrict2(index2, size2, index1, size1);
+ }
+ static
+ BOOST_UBLAS_INLINE
+ size_type global_mutable_restrict2 (size_type index1, size_type size1, size_type index2, size_type size2) {
+ return L::global_mutable_restrict1(index2, size2, index1, size1);
+ }
+ };
+ }
+
     template <class Z>
     struct basic_lower {
         typedef Z size_type;
@@ -1777,80 +1856,56 @@
             return L::lower_element (i, size_i, j, size_j);
         }
 
+ // return nearest valid index in column j
         static
         BOOST_UBLAS_INLINE
- size_type restrict1 (size_type i, size_type j) {
- return (std::max) (i, j);
+ size_type restrict1 (size_type i, size_type j, size_type size1, size_type size2) {
+ return (std::max)(j, (std::min) (size1, i));
         }
+ // return nearest valid index in row i
         static
         BOOST_UBLAS_INLINE
- size_type restrict2 (size_type i, size_type j) {
- return (std::min) (i + 1, j);
+ size_type restrict2 (size_type i, size_type j, size_type /* size1 */, size_type /* size2 */) {
+ return (std::max)(size_type(0), (std::min) (i+1, j));
         }
+ // return nearest valid mutable index in column j
         static
         BOOST_UBLAS_INLINE
- size_type mutable_restrict1 (size_type i, size_type j) {
- return (std::max) (i, j);
+ size_type mutable_restrict1 (size_type i, size_type j, size_type size1, size_type size2) {
+ return (std::max)(j, (std::min) (size1, i));
         }
+ // return nearest valid mutable index in row i
         static
         BOOST_UBLAS_INLINE
- size_type mutable_restrict2 (size_type i, size_type j) {
- return (std::min) (i + 1, j);
+ size_type mutable_restrict2 (size_type i, size_type j, size_type /* size1 */, size_type /* size2 */) {
+ return (std::max)(size_type(0), (std::min) (i+1, j));
         }
- };
- template <class Z>
- struct basic_upper {
- typedef Z size_type;
 
- template<class L>
- static
- BOOST_UBLAS_INLINE
- size_type packed_size (L, size_type size_i, size_type size_j) {
- return L::triangular_size (size_i, size_j);
- }
+ // return an index between the first and (1+last) filled row
+ static
+ BOOST_UBLAS_INLINE
+ size_type global_restrict1 (size_type index1, size_type size1, size_type index2, size_type size2) {
+ return (std::max)(size_type(0), (std::min)(size1, index1) );
+ }
+ // return an index between the first and (1+last) filled column
+ static
+ BOOST_UBLAS_INLINE
+ size_type global_restrict2 (size_type index1, size_type size1, size_type index2, size_type size2) {
+ return (std::max)(size_type(0), (std::min)(size2, index2) );
+ }
 
- static
- BOOST_UBLAS_INLINE
- bool zero (size_type i, size_type j) {
- return j < i;
- }
- static
- BOOST_UBLAS_INLINE
- bool one (size_type /* i */, size_type /* j */) {
- return false;
- }
- static
- BOOST_UBLAS_INLINE
- bool other (size_type i, size_type j) {
- return j >= i;
- }
- template<class L>
- static
- BOOST_UBLAS_INLINE
- size_type element (L, size_type i, size_type size_i, size_type j, size_type size_j) {
- return L::upper_element (i, size_i, j, size_j);
- }
-
- static
- BOOST_UBLAS_INLINE
- size_type restrict1 (size_type i, size_type j) {
- return (std::min) (i, j + 1);
- }
- static
- BOOST_UBLAS_INLINE
- size_type restrict2 (size_type i, size_type j) {
- return (std::max) (i, j);
- }
- static
- BOOST_UBLAS_INLINE
- size_type mutable_restrict1 (size_type i, size_type j) {
- return (std::min) (i, j + 1);
- }
- static
- BOOST_UBLAS_INLINE
- size_type mutable_restrict2 (size_type i, size_type j) {
- return (std::max) (i, j);
- }
+ // return an index between the first and (1+last) filled mutable row
+ static
+ BOOST_UBLAS_INLINE
+ size_type global_mutable_restrict1 (size_type index1, size_type size1, size_type index2, size_type size2) {
+ return (std::max)(size_type(0), (std::min)(size1, index1) );
+ }
+ // return an index between the first and (1+last) filled mutable column
+ static
+ BOOST_UBLAS_INLINE
+ size_type global_mutable_restrict2 (size_type index1, size_type size1, size_type index2, size_type size2) {
+ return (std::max)(size_type(0), (std::min)(size2, index2) );
+ }
     };
 
     // the first row only contains a single 1. Thus it is not stored.
@@ -1888,64 +1943,33 @@
 
         static
         BOOST_UBLAS_INLINE
- size_type mutable_restrict1 (size_type i, size_type j) {
- return (std::max) ( (std::max<size_type>)(1, i), j);
+ size_type mutable_restrict1 (size_type i, size_type j, size_type size1, size_type size2) {
+ return (std::max)(j+1, (std::min) (size1, i));
         }
         static
         BOOST_UBLAS_INLINE
- size_type mutable_restrict2 (size_type i, size_type j) {
- return (std::min) ( (std::max<size_type>)(1, i), j);
- }
- };
-
- // the last row only contains a single 1. Thus it is not stored.
- template <class Z>
- struct basic_unit_upper : public basic_upper<Z> {
- typedef Z size_type;
-
- template<class L>
- static
- BOOST_UBLAS_INLINE
- size_type packed_size (L, size_type size_i, size_type size_j) {
- // Zero size strict triangles are bad at this point
- BOOST_UBLAS_CHECK (size_i != 0 && size_j != 0, bad_index ());
- return L::triangular_size (size_i - 1, size_j - 1);
+ size_type mutable_restrict2 (size_type i, size_type j, size_type size1, size_type size2) {
+ return (std::max)(size_type(0), (std::min) (i, j));
         }
 
- static
- BOOST_UBLAS_INLINE
- bool one (size_type i, size_type j) {
- return j == i;
- }
- static
- BOOST_UBLAS_INLINE
- bool other (size_type i, size_type j) {
- return j > i;
- }
- template<class L>
- static
- BOOST_UBLAS_INLINE
- size_type element (L, size_type i, size_type size_i, size_type j, size_type size_j) {
- // Zero size strict triangles are bad at this point
- BOOST_UBLAS_CHECK (size_i != 0 && size_j != 0 && j != 0, bad_index ());
- return L::upper_element (i, size_i - 1, j-1, size_j - 1);
- }
-
- static
- BOOST_UBLAS_INLINE
- size_type mutable_restrict1 (size_type i, size_type j) {
- return (std::min) (i, (std::max<size_type>)(1, j));
- }
- static
- BOOST_UBLAS_INLINE
- size_type mutable_restrict2 (size_type i, size_type j) {
- return (std::max) (i, (std::max<size_type>)(1, j));
- }
+ // return an index between the first and (1+last) filled mutable row
+ static
+ BOOST_UBLAS_INLINE
+ size_type global_mutable_restrict1 (size_type index1, size_type size1, size_type index2, size_type size2) {
+ return (std::max)(size_type(1), (std::min)(size1, index1) );
+ }
+ // return an index between the first and (1+last) filled mutable column
+ static
+ BOOST_UBLAS_INLINE
+ size_type global_mutable_restrict2 (size_type index1, size_type size1, size_type index2, size_type size2) {
+ BOOST_UBLAS_CHECK( size2 >= 1 , external_logic() );
+ return (std::max)(size_type(0), (std::min)(size2-1, index2) );
+ }
     };
 
- // the first row only contains a single 1. Thus it is not stored.
+ // the first row only contains no element. Thus it is not stored.
     template <class Z>
- struct basic_strict_lower : public basic_lower<Z> {
+ struct basic_strict_lower : public basic_unit_lower<Z> {
         typedef Z size_type;
 
         template<class L>
@@ -1983,85 +2007,42 @@
 
         static
         BOOST_UBLAS_INLINE
- size_type restrict1 (size_type i, size_type j) {
- return (std::max) ( (std::max<size_type>)(1, i), j);
- }
- static
- BOOST_UBLAS_INLINE
- size_type restrict2 (size_type i, size_type j) {
- return (std::min) ( (std::max<size_type>)(1, i), j);
- }
- static
- BOOST_UBLAS_INLINE
- size_type mutable_restrict1 (size_type i, size_type j) {
- return (std::max) ( (std::max<size_type>)(1, i), j);
+ size_type restrict1 (size_type i, size_type j, size_type size1, size_type size2) {
+ return mutable_restrict1(i, j, size1, size2);
         }
         static
         BOOST_UBLAS_INLINE
- size_type mutable_restrict2 (size_type i, size_type j) {
- return (std::min) ( (std::max<size_type>)(1, i), j);
+ size_type restrict2 (size_type i, size_type j, size_type size1, size_type size2) {
+ return mutable_restrict2(i, j, size1, size2);
         }
+
+ // return an index between the first and (1+last) filled row
+ static
+ BOOST_UBLAS_INLINE
+ size_type global_restrict1 (size_type index1, size_type size1, size_type index2, size_type size2) {
+ return global_mutable_restrict1(index1, size1, index2, size2);
+ }
+ // return an index between the first and (1+last) filled column
+ static
+ BOOST_UBLAS_INLINE
+ size_type global_restrict2 (size_type index1, size_type size1, size_type index2, size_type size2) {
+ return global_mutable_restrict2(index1, size1, index2, size2);
+ }
     };
 
- // the last row only contains a single 1. Thus it is not stored.
+
     template <class Z>
- struct basic_strict_upper : public basic_upper<Z> {
- typedef Z size_type;
+ struct basic_upper : public detail::transposed_structure<basic_lower<Z> >
+ { };
 
- template<class L>
- static
- BOOST_UBLAS_INLINE
- size_type packed_size (L, size_type size_i, size_type size_j) {
- // Zero size strict triangles are bad at this point
- BOOST_UBLAS_CHECK (size_i != 0 && size_j != 0, bad_index ());
- return L::triangular_size (size_i - 1, size_j - 1);
- }
+ template <class Z>
+ struct basic_unit_upper : public detail::transposed_structure<basic_unit_lower<Z> >
+ { };
 
- static
- BOOST_UBLAS_INLINE
- bool zero (size_type i, size_type j) {
- return j <= i;
- }
- static
- BOOST_UBLAS_INLINE
- bool one (size_type /*i*/, size_type /*j*/) {
- return false;
- }
- static
- BOOST_UBLAS_INLINE
- bool other (size_type i, size_type j) {
- return j > i;
- }
- template<class L>
- static
- BOOST_UBLAS_INLINE
- size_type element (L, size_type i, size_type size_i, size_type j, size_type size_j) {
- // Zero size strict triangles are bad at this point
- BOOST_UBLAS_CHECK (size_i != 0 && size_j != 0 && j != 0, bad_index ());
- return L::upper_element (i, size_i - 1, j-1, size_j - 1);
- }
+ template <class Z>
+ struct basic_strict_upper : public detail::transposed_structure<basic_strict_lower<Z> >
+ { };
 
- static
- BOOST_UBLAS_INLINE
- size_type restrict1 (size_type i, size_type j) {
- return (std::min) (i, (std::max<size_type>)(1, j));
- }
- static
- BOOST_UBLAS_INLINE
- size_type restrict2 (size_type i, size_type j) {
- return (std::max) (i, (std::max<size_type>)(1, j));
- }
- static
- BOOST_UBLAS_INLINE
- size_type mutable_restrict1 (size_type i, size_type j) {
- return (std::min) (i, (std::max<size_type>)(1, j));
- }
- static
- BOOST_UBLAS_INLINE
- size_type mutable_restrict2 (size_type i, size_type j) {
- return (std::max) (i, (std::max<size_type>)(1, j));
- }
- };
 
 }}}
 

Modified: branches/proto/v4/boost/numeric/ublas/traits.hpp
==============================================================================
--- branches/proto/v4/boost/numeric/ublas/traits.hpp (original)
+++ branches/proto/v4/boost/numeric/ublas/traits.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -24,6 +24,20 @@
 #include <boost/type_traits.hpp>
 #include <complex>
 
+// anonymous namespace to avoid ADL issues
+namespace {
+ template<class T> T boost_numeric_ublas_sqrt (const T& t) {
+ using namespace std;
+ // we'll find either std::sqrt or else another version via ADL:
+ return sqrt (t);
+ }
+ template<class T> T boost_numeric_ublas_abs (const T& t) {
+ using namespace std;
+ // we'll find either std::abs or else another version via ADL:
+ return abs (t);
+ }
+}
+
 namespace boost { namespace numeric { namespace ublas {
 
     // Use Joel de Guzman's return type deduction
@@ -84,17 +98,13 @@
         static
         BOOST_UBLAS_INLINE
         real_type type_abs (const_reference t) {
- // we'll find either std::abs or else another version via ADL:
- using namespace std;
- return abs (t);
+ return boost_numeric_ublas_abs (t);
         }
         static
         BOOST_UBLAS_INLINE
         value_type type_sqrt (const_reference t) {
- using namespace std;
             // force a type conversion back to value_type for intgral types
- // we'll find either std::sqrt or else another version via ADL:
- return value_type (sqrt (t));
+ return value_type (boost_numeric_ublas_sqrt (t));
         }
 
         static

Modified: branches/proto/v4/boost/numeric/ublas/triangular.hpp
==============================================================================
--- branches/proto/v4/boost/numeric/ublas/triangular.hpp (original)
+++ branches/proto/v4/boost/numeric/ublas/triangular.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -295,25 +295,33 @@
         BOOST_UBLAS_INLINE
         const_iterator1 find1 (int rank, size_type i, size_type j) const {
             if (rank == 1)
- i = triangular_type::restrict1 (i, j);
+ i = triangular_type::restrict1 (i, j, size1_, size2_);
+ if (rank == 0)
+ i = triangular_type::global_restrict1 (i, size1_, j, size2_);
             return const_iterator1 (*this, i, j);
         }
         BOOST_UBLAS_INLINE
         iterator1 find1 (int rank, size_type i, size_type j) {
             if (rank == 1)
- i = triangular_type::mutable_restrict1 (i, j);
+ i = triangular_type::mutable_restrict1 (i, j, size1_, size2_);
+ if (rank == 0)
+ i = triangular_type::global_mutable_restrict1 (i, size1_, j, size2_);
             return iterator1 (*this, i, j);
         }
         BOOST_UBLAS_INLINE
         const_iterator2 find2 (int rank, size_type i, size_type j) const {
             if (rank == 1)
- j = triangular_type::restrict2 (i, j);
+ j = triangular_type::restrict2 (i, j, size1_, size2_);
+ if (rank == 0)
+ j = triangular_type::global_restrict2 (i, size1_, j, size2_);
             return const_iterator2 (*this, i, j);
         }
         BOOST_UBLAS_INLINE
         iterator2 find2 (int rank, size_type i, size_type j) {
             if (rank == 1)
- j = triangular_type::mutable_restrict2 (i, j);
+ j = triangular_type::mutable_restrict2 (i, j, size1_, size2_);
+ if (rank == 0)
+ j = triangular_type::global_mutable_restrict2 (i, size1_, j, size2_);
             return iterator2 (*this, i, j);
         }
 
@@ -1145,26 +1153,34 @@
         BOOST_UBLAS_INLINE
         const_iterator1 find1 (int rank, size_type i, size_type j) const {
             if (rank == 1)
- i = triangular_type::restrict1 (i, j);
- return const_iterator1 (*this, data ().find1 (rank, i, j));
+ i = triangular_type::restrict1 (i, j, size1(), size2());
+ if (rank == 0)
+ i = triangular_type::global_restrict1 (i, size1(), j, size2());
+ return const_iterator1 (*this, data ().find1 (rank, i, j));
         }
         BOOST_UBLAS_INLINE
         iterator1 find1 (int rank, size_type i, size_type j) {
             if (rank == 1)
- i = triangular_type::mutable_restrict1 (i, j);
- return iterator1 (*this, data ().find1 (rank, i, j));
+ i = triangular_type::mutable_restrict1 (i, j, size1(), size2());
+ if (rank == 0)
+ i = triangular_type::global_mutable_restrict1 (i, size1(), j, size2());
+ return iterator1 (*this, data ().find1 (rank, i, j));
         }
         BOOST_UBLAS_INLINE
         const_iterator2 find2 (int rank, size_type i, size_type j) const {
             if (rank == 1)
- j = triangular_type::restrict2 (i, j);
- return const_iterator2 (*this, data ().find2 (rank, i, j));
+ j = triangular_type::restrict2 (i, j, size1(), size2());
+ if (rank == 0)
+ j = triangular_type::global_restrict2 (i, size1(), j, size2());
+ return const_iterator2 (*this, data ().find2 (rank, i, j));
         }
         BOOST_UBLAS_INLINE
         iterator2 find2 (int rank, size_type i, size_type j) {
             if (rank == 1)
- j = triangular_type::mutable_restrict2 (i, j);
- return iterator2 (*this, data ().find2 (rank, i, j));
+ j = triangular_type::mutable_restrict2 (i, j, size1(), size2());
+ if (rank == 0)
+ j = triangular_type::global_mutable_restrict2 (i, size1(), j, size2());
+ return iterator2 (*this, data ().find2 (rank, i, j));
         }
 
         // Iterators simply are indices.

Modified: branches/proto/v4/boost/pending/integer_log2.hpp
==============================================================================
--- branches/proto/v4/boost/pending/integer_log2.hpp (original)
+++ branches/proto/v4/boost/pending/integer_log2.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -1,20 +1,16 @@
-// -------------------------------------
+// -----------------------------------------------------------
 // integer_log2.hpp
 //
 // Gives the integer part of the logarithm, in base 2, of a
 // given number. Behavior is undefined if the argument is <= 0.
 //
-//
-// (C) Copyright Gennaro Prota 2003 - 2004.
+// 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)
 //
-// ------------------------------------------------------
-//
-// $Id$
-
+// -----------------------------------------------------------
 
 #ifndef BOOST_INTEGER_LOG2_HPP_GP_20030301
 #define BOOST_INTEGER_LOG2_HPP_GP_20030301
@@ -37,7 +33,7 @@
 
       while (x != 1) {
 
- const T t = x >> n;
+ const T t = static_cast<T>(x >> n);
           if (t) {
               result += n;
               x = t;

Modified: branches/proto/v4/boost/pending/lowest_bit.hpp
==============================================================================
--- branches/proto/v4/boost/pending/lowest_bit.hpp (original)
+++ branches/proto/v4/boost/pending/lowest_bit.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -1,17 +1,15 @@
-// -------------------------------------
+// -----------------------------------------------------------
 // lowest_bit.hpp
 //
 // Position of the lowest bit 'on'
 //
-// (C) Copyright Gennaro Prota 2003 - 2004.
+// 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)
 //
-// ------------------------------------------------------
-//
-// $Id$
+// -----------------------------------------------------------
 
 #ifndef BOOST_LOWEST_BIT_HPP_GP_20030301
 #define BOOST_LOWEST_BIT_HPP_GP_20030301

Modified: branches/proto/v4/boost/pfto.hpp
==============================================================================
--- branches/proto/v4/boost/pfto.hpp (original)
+++ branches/proto/v4/boost/pfto.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -6,69 +6,14 @@
 # pragma once
 #endif
 
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// pfto.hpp: workarounds for compilers which have problems supporting
-// Partial Function Template Ordering (PFTO).
+#error "This header is deprecated. Please use: boost/serialization/pfto.hpp"
 
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org/libs/serialization for updates, documentation, and revision history.
-// PFTO version is used to specify the last argument of certain functions
-// Function it is used to support compilers that fail to support correct Partial
-// Template Ordering
-#include <boost/config.hpp>
-
-// some compilers can use an exta argument and use function overloading
-// to choose desired function. This extra argument is long in the default
-// function implementation and int for the rest. The function is called
-// with an int argument. This first attempts to match functions with an
-// int argument before the default one (with a long argument). This is
-// known to function with VC 6.0. On other compilers this fails (Borland)
-// or causes other problems (GCC). note: this
-
-#if defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
- #define BOOST_PFTO long
-#else
- #define BOOST_PFTO
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/serialization/pfto.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/serialization/pfto.hpp"
 #endif
 
-// here's another approach. Rather than use a default function - make sure
-// there is no default at all by requiring that all function invocations
-// have a "wrapped" argument type. This solves a problem with VC 6.0
-// (and perhaps others) while implementing templated constructors.
-
-namespace boost {
-
-template<class T>
-struct pfto_wrapper {
- const T & t;
- operator const T & (){
- return t;
- }
- pfto_wrapper (const T & rhs) : t(rhs) {}
-};
-
-template<class T>
-pfto_wrapper<T> make_pfto_wrapper(const T & t, BOOST_PFTO int){
- return pfto_wrapper<T>(t);
-}
-
-template<class T>
-pfto_wrapper<T> make_pfto_wrapper(const pfto_wrapper<T> & t, int){
- return t;
-}
-
-} // namespace boost
-
-#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
- #define BOOST_PFTO_WRAPPER(T) boost::pfto_wrapper<T>
- #define BOOST_MAKE_PFTO_WRAPPER(t) boost::make_pfto_wrapper(t, 0)
-#else
- #define BOOST_PFTO_WRAPPER(T) T
- #define BOOST_MAKE_PFTO_WRAPPER(t) t
-#endif
+#include <boost/serialization/pfto.hpp>
 
 #endif // BOOST_PFTO_HPP

Modified: branches/proto/v4/boost/proto/extends.hpp
==============================================================================
--- branches/proto/v4/boost/proto/extends.hpp (original)
+++ branches/proto/v4/boost/proto/extends.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -21,6 +21,7 @@
 #include <boost/preprocessor/repetition/enum_binary_params.hpp>
 #include <boost/preprocessor/repetition/enum_trailing_params.hpp>
 #include <boost/preprocessor/repetition/enum_trailing_binary_params.hpp>
+#include <boost/preprocessor/seq/for_each.hpp>
 #include <boost/utility/addressof.hpp>
 #include <boost/utility/result_of.hpp>
 #include <boost/proto/proto_fwd.hpp>

Modified: branches/proto/v4/boost/proto/matches.hpp
==============================================================================
--- branches/proto/v4/boost/proto/matches.hpp (original)
+++ branches/proto/v4/boost/proto/matches.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -484,8 +484,8 @@
             {};
         }
 
- namespace wildcardns_
- {
+ BOOST_PROTO_BEGIN_ADL_NAMESPACE(wildcardns_)
+
             /// \brief A wildcard grammar element that matches any expression,
             /// and a transform that returns the current expression unchanged.
             ///
@@ -548,7 +548,8 @@
                     }
                 };
             };
- }
+
+ BOOST_PROTO_END_ADL_NAMESPACE(wildcardns_)
 
         namespace control
         {

Modified: branches/proto/v4/boost/proto/transform/arg.hpp
==============================================================================
--- branches/proto/v4/boost/proto/transform/arg.hpp (original)
+++ branches/proto/v4/boost/proto/transform/arg.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -20,6 +20,14 @@
 
     /// \brief A PrimitiveTransform that returns the current expression
     /// unmodified
+ ///
+ /// Example:
+ ///
+ /// \code
+ /// proto::terminal<int>::type i = {42};
+ /// proto::terminal<int>::type & j = proto::_expr()(i);
+ /// assert( boost::addressof(i) == boost::addressof(j) );
+ /// \endcode
     struct _expr : transform<_expr>
     {
         template<typename Expr, typename State, typename Data>
@@ -27,7 +35,8 @@
         {
             typedef Expr result_type;
 
- /// \param expr An expression
+ /// Returns the current expression.
+ /// \param expr The current expression.
             /// \return \c expr
             /// \throw nothrow
             typename impl::expr_param operator()(
@@ -43,6 +52,14 @@
 
     /// \brief A PrimitiveTransform that returns the current state
     /// unmodified
+ ///
+ /// Example:
+ ///
+ /// \code
+ /// proto::terminal<int>::type i = {42};
+ /// char ch = proto::_state()(i, 'a');
+ /// assert( ch == 'a' );
+ /// \endcode
     struct _state : transform<_state>
     {
         template<typename Expr, typename State, typename Data>
@@ -50,6 +67,7 @@
         {
             typedef State result_type;
 
+ /// Returns the current state.
             /// \param state The current state.
             /// \return \c state
             /// \throw nothrow
@@ -66,6 +84,15 @@
 
     /// \brief A PrimitiveTransform that returns the current data
     /// unmodified
+ ///
+ /// Example:
+ ///
+ /// \code
+ /// proto::terminal<int>::type i = {42};
+ /// std::string str("hello");
+ /// std::string & data = proto::_data()(i, 'a', str);
+ /// assert( &str == &data );
+ /// \endcode
     struct _data : transform<_data>
     {
         template<typename Expr, typename State, typename Data>
@@ -73,7 +100,8 @@
         {
             typedef Data result_type;
 
- /// \param state The current data.
+ /// Returns the current data.
+ /// \param data The current data.
             /// \return \c data
             /// \throw nothrow
             typename impl::data_param operator ()(
@@ -87,35 +115,53 @@
         };
     };
 
- /// \brief A PrimitiveTransform that returns I-th child of the current
+ /// \brief A PrimitiveTransform that returns N-th child of the current
     /// expression.
- template<int I>
- struct _child_c : transform<_child_c<I> >
+ ///
+ /// Example:
+ ///
+ /// \code
+ /// proto::terminal<int>::type i = {42};
+ /// proto::terminal<int>::type & j = proto::_child_c<0>()(-i);
+ /// assert( boost::addressof(i) == boost::addressof(j) );
+ /// \endcode
+ template<int N>
+ struct _child_c : transform<_child_c<N> >
     {
         template<typename Expr, typename State, typename Data>
         struct impl : transform_impl<Expr, State, Data>
         {
             typedef
- typename result_of::child_c<Expr, I>::type
+ typename result_of::child_c<Expr, N>::type
             result_type;
 
+ /// Returns the N-th child of \c expr
+ /// \pre <tt>arity_of\<Expr\>::::value \> N</tt>
             /// \param expr The current expression.
- /// \return <tt>proto::child_c\<I\>(expr)</tt>
+ /// \return <tt>proto::child_c\<N\>(expr)</tt>
             /// \throw nothrow
- typename result_of::child_c<typename impl::expr_param, I>::type
+ typename result_of::child_c<typename impl::expr_param, N>::type
             operator ()(
                 typename impl::expr_param expr
               , typename impl::state_param
               , typename impl::data_param
             ) const
             {
- return proto::child_c<I>(expr);
+ return proto::child_c<N>(expr);
             }
         };
     };
 
     /// \brief A PrimitiveTransform that returns the value of the
     /// current terminal expression.
+ ///
+ /// Example:
+ ///
+ /// \code
+ /// proto::terminal<int>::type i = {42};
+ /// int j = proto::_value()(i);
+ /// assert( 42 == j );
+ /// \endcode
     struct _value : transform<_value>
     {
         template<typename Expr, typename State, typename Data>
@@ -125,6 +171,8 @@
                 typename result_of::value<Expr>::type
             result_type;
 
+ /// Returns the value of the specified terminal expression.
+ /// \pre <tt>arity_of\<Expr\>::::value == 0</tt>.
             /// \param expr The current expression.
             /// \return <tt>proto::value(expr)</tt>
             /// \throw nothrow
@@ -142,6 +190,15 @@
 
     /// \brief A unary CallableTransform that wraps its argument
     /// in a \c boost::reference_wrapper\<\>.
+ ///
+ /// Example:
+ ///
+ /// \code
+ /// proto::terminal<int>::type i = {42};
+ /// boost::reference_wrapper<proto::terminal<int>::type> j
+ /// = proto::when<_, proto::_byref(_)>()(i);
+ /// assert( boost::addressof(i) == boost::addressof(j.get()) );
+ /// \endcode
     struct _byref : callable
     {
         template<typename Sig>
@@ -159,6 +216,7 @@
             typedef boost::reference_wrapper<T> const type;
         };
 
+ /// Wrap the parameter \c t in a \c boost::reference_wrapper\<\>
         /// \param t The object to wrap
         /// \return <tt>boost::ref(t)</tt>
         /// \throw nothrow
@@ -178,7 +236,16 @@
     };
 
     /// \brief A unary CallableTransform that strips references
- /// from its argument.
+ /// and \c boost::reference_wrapper\<\> from its argument.
+ ///
+ /// Example:
+ ///
+ /// \code
+ /// proto::terminal<int>::type i = {42};
+ /// int j = 67;
+ /// int k = proto::when<_, proto::_byval(proto::_state)>()(i, boost::ref(j));
+ /// assert( 67 == k );
+ /// \endcode
     struct _byval : callable
     {
         template<typename Sig>
@@ -241,8 +308,8 @@
 
     /// INTERNAL ONLY
     ///
- template<int I>
- struct is_callable<_child_c<I> >
+ template<int N>
+ struct is_callable<_child_c<N> >
       : mpl::true_
     {};
 

Modified: branches/proto/v4/boost/regex/concepts.hpp
==============================================================================
--- branches/proto/v4/boost/regex/concepts.hpp (original)
+++ branches/proto/v4/boost/regex/concepts.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -87,12 +87,12 @@
 public:
    regex_traits_architype();
    typedef charT char_type;
- typedef std::size_t size_type;
+ // typedef std::size_t size_type;
    typedef std::vector<char_type> string_type;
    typedef copy_constructible_archetype<assignable_archetype<> > locale_type;
    typedef bitmask_archetype char_class_type;
 
- static size_type length(const char_type* ) { return 0; }
+ static std::size_t length(const char_type* ) { return 0; }
 
    charT translate(charT ) const { return charT(); }
    charT translate_nocase(charT ) const { return static_object<charT>::get(); }
@@ -163,21 +163,21 @@
    RegexTraitsConcept();
    // required typedefs:
    typedef typename traits::char_type char_type;
- typedef typename traits::size_type size_type;
+ // typedef typename traits::size_type size_type;
    typedef typename traits::string_type string_type;
    typedef typename traits::locale_type locale_type;
    typedef typename traits::char_class_type char_class_type;
 
    void constraints()
    {
- function_requires<UnsignedIntegerConcept<size_type> >();
+ //function_requires<UnsignedIntegerConcept<size_type> >();
       function_requires<RandomAccessContainerConcept<string_type> >();
       function_requires<DefaultConstructibleConcept<locale_type> >();
       function_requires<CopyConstructibleConcept<locale_type> >();
       function_requires<AssignableConcept<locale_type> >();
       function_requires<BitmaskConcept<char_class_type> >();
 
- size_type n = traits::length(m_pointer);
+ std::size_t n = traits::length(m_pointer);
       ignore_unused_variable_warning(n);
 
       char_type c = m_ctraits.translate(m_char);

Modified: branches/proto/v4/boost/regex/icu.hpp
==============================================================================
--- branches/proto/v4/boost/regex/icu.hpp (original)
+++ branches/proto/v4/boost/regex/icu.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -355,7 +355,7 @@
    return re_detail::do_make_u32regex(p, p + std::wcslen(p), opt, static_cast<boost::mpl::int_<sizeof(wchar_t)> const*>(0));
 }
 #endif
-#ifndef U_WCHAR_IS_UTF16
+#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2)
 inline u32regex make_u32regex(const UChar* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl)
 {
    return re_detail::do_make_u32regex(p, p + u_strlen(p), opt, static_cast<boost::mpl::int_<2> const*>(0));
@@ -455,7 +455,7 @@
 {
    return re_detail::do_regex_match(p, p+u_strlen(p), m, e, flags, static_cast<mpl::int_<2> const*>(0));
 }
-#if !defined(U_WCHAR_IS_UTF16) && !defined(BOOST_NO_WREGEX)
+#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2) && !defined(BOOST_NO_WREGEX)
 inline bool u32regex_match(const wchar_t* p,
                  match_results<const wchar_t*>& m,
                  const u32regex& e,
@@ -519,7 +519,7 @@
    match_results<const UChar*> m;
    return re_detail::do_regex_match(p, p+u_strlen(p), m, e, flags, static_cast<mpl::int_<2> const*>(0));
 }
-#if !defined(U_WCHAR_IS_UTF16) && !defined(BOOST_NO_WREGEX)
+#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2) && !defined(BOOST_NO_WREGEX)
 inline bool u32regex_match(const wchar_t* p,
                  const u32regex& e,
                  match_flag_type flags = match_default)
@@ -640,7 +640,7 @@
 {
    return re_detail::do_regex_search(p, p+u_strlen(p), m, e, flags, p, static_cast<mpl::int_<2> const*>(0));
 }
-#if !defined(U_WCHAR_IS_UTF16) && !defined(BOOST_NO_WREGEX)
+#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2) && !defined(BOOST_NO_WREGEX)
 inline bool u32regex_search(const wchar_t* p,
                  match_results<const wchar_t*>& m,
                  const u32regex& e,
@@ -701,7 +701,7 @@
    match_results<const UChar*> m;
    return re_detail::do_regex_search(p, p+u_strlen(p), m, e, flags, p, static_cast<mpl::int_<2> const*>(0));
 }
-#if !defined(U_WCHAR_IS_UTF16) && !defined(BOOST_NO_WREGEX)
+#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2) && !defined(BOOST_NO_WREGEX)
 inline bool u32regex_search(const wchar_t* p,
                  const u32regex& e,
                  match_flag_type flags = match_default)

Modified: branches/proto/v4/boost/regex/v4/basic_regex.hpp
==============================================================================
--- branches/proto/v4/boost/regex/v4/basic_regex.hpp (original)
+++ branches/proto/v4/boost/regex/v4/basic_regex.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -191,7 +191,7 @@
 {
 public:
    // typedefs:
- typedef typename traits::size_type traits_size_type;
+ typedef std::size_t traits_size_type;
    typedef typename traits::string_type traits_string_type;
    typedef charT char_type;
    typedef traits traits_type;

Modified: branches/proto/v4/boost/regex/v4/perl_matcher.hpp
==============================================================================
--- branches/proto/v4/boost/regex/v4/perl_matcher.hpp (original)
+++ branches/proto/v4/boost/regex/v4/perl_matcher.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -331,7 +331,7 @@
    typedef typename traits::char_type char_type;
    typedef perl_matcher<BidiIterator, Allocator, traits> self_type;
    typedef bool (self_type::*matcher_proc_type)(void);
- typedef typename traits::size_type traits_size_type;
+ typedef std::size_t traits_size_type;
    typedef typename is_byte<char_type>::width_type width_type;
    typedef typename regex_iterator_traits<BidiIterator>::difference_type difference_type;
 

Modified: branches/proto/v4/boost/regex/v4/perl_matcher_non_recursive.hpp
==============================================================================
--- branches/proto/v4/boost/regex/v4/perl_matcher_non_recursive.hpp (original)
+++ branches/proto/v4/boost/regex/v4/perl_matcher_non_recursive.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -477,7 +477,9 @@
       take_second = can_start(*position, rep->_map, (unsigned char)mask_skip);
    }
 
- if(take_first || (next_count->get_id() != rep->id))
+ if((m_backup_state->id != saved_state_repeater_count)
+ || (static_cast<saved_repeater<BidiIterator>*>(m_backup_state)->count.get_id() != rep->id)
+ || (next_count->get_id() != rep->id))
    {
       // we're moving to a different repeat from the last
       // one, so set up a counter object:

Modified: branches/proto/v4/boost/regex/v4/u32regex_iterator.hpp
==============================================================================
--- branches/proto/v4/boost/regex/v4/u32regex_iterator.hpp (original)
+++ branches/proto/v4/boost/regex/v4/u32regex_iterator.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -166,7 +166,7 @@
    return u32regex_iterator<const wchar_t*>(p, p+std::wcslen(p), e, m);
 }
 #endif
-#ifndef U_WCHAR_IS_UTF16
+#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2)
 inline u32regex_iterator<const UChar*> make_u32regex_iterator(const UChar* p, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default)
 {
    return u32regex_iterator<const UChar*>(p, p+u_strlen(p), e, m);

Modified: branches/proto/v4/boost/regex/v4/u32regex_token_iterator.hpp
==============================================================================
--- branches/proto/v4/boost/regex/v4/u32regex_token_iterator.hpp (original)
+++ branches/proto/v4/boost/regex/v4/u32regex_token_iterator.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -282,7 +282,7 @@
    return u32regex_token_iterator<const wchar_t*>(p, p+std::wcslen(p), e, submatch, m);
 }
 #endif
-#ifndef U_WCHAR_IS_UTF16
+#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2)
 inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const UChar* p, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
 {
    return u32regex_token_iterator<const UChar*>(p, p+u_strlen(p), e, m);
@@ -313,7 +313,7 @@
    return u32regex_token_iterator<const wchar_t*>(p, p+std::wcslen(p), e, submatch, m);
 }
 #endif
-#ifndef U_WCHAR_IS_UTF16
+#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2)
 template <std::size_t N>
 inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const UChar* p, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default)
 {
@@ -344,7 +344,7 @@
    return u32regex_token_iterator<const wchar_t*>(p, p+std::wcslen(p), e, submatch, m);
 }
 #endif
-#ifndef U_WCHAR_IS_UTF16
+#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2)
 inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const UChar* p, const u32regex& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default)
 {
    return u32regex_token_iterator<const UChar*>(p, p+u_strlen(p), e, m);

Modified: branches/proto/v4/boost/serialization/access.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/access.hpp (original)
+++ branches/proto/v4/boost/serialization/access.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -18,7 +18,7 @@
 
 #include <boost/config.hpp>
 
-#include <boost/pfto.hpp>
+#include <boost/serialization/pfto.hpp>
 
 namespace boost {
 

Modified: branches/proto/v4/boost/serialization/array.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/array.hpp (original)
+++ branches/proto/v4/boost/serialization/array.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -124,7 +124,7 @@
 
 template <class Archive, class T, std::size_t N>
 
-void serialize(Archive& ar, boost::array<T,N>& a, const unsigned int version)
+void serialize(Archive& ar, boost::array<T,N>& a, const unsigned int /* version */)
 {
   ar & make_nvp("elems",a.elems);
 }

Modified: branches/proto/v4/boost/serialization/assume_abstract.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/assume_abstract.hpp (original)
+++ branches/proto/v4/boost/serialization/assume_abstract.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -1,5 +1,5 @@
-#ifndef BOOST_SERIALIZATION_IS_ABSTRACT_CLASS_HPP
-#define BOOST_SERIALIZATION_IS_ABSTRACT_CLASS_HPP
+#ifndef BOOST_SERIALIZATION_ASSUME_ABSTRACT_HPP
+#define BOOST_SERIALIZATION_ASSUME_ABSTRACT_HPP
 
 // MS compatible compilers support #pragma once
 #if defined(_MSC_VER) && (_MSC_VER >= 1020)
@@ -7,7 +7,7 @@
 #endif
 
 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// is_abstract_class.hpp:
+// assume_abstract_class.hpp:
 
 // (C) Copyright 2008 Robert Ramey
 // Use, modification and distribution is subject to the Boost Software
@@ -56,4 +56,4 @@
 
 #endif // BOOST_NO_IS_ABSTRACT
 
-#endif //BOOST_SERIALIZATION_IS_ABSTRACT_CLASS_HPP
+#endif //BOOST_SERIALIZATION_ASSUME_ABSTRACT_HPP

Modified: branches/proto/v4/boost/serialization/collection_size_type.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/collection_size_type.hpp (original)
+++ branches/proto/v4/boost/serialization/collection_size_type.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 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)
 
-#include <boost/strong_typedef.hpp>
+#include <boost/serialization/strong_typedef.hpp>
 #include <boost/serialization/level.hpp>
 
 namespace boost { namespace serialization {

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -24,7 +24,7 @@
 #endif
 
 #include <boost/checked_delete.hpp>
-#include <boost/throw_exception.hpp>
+#include <boost/serialization/throw_exception.hpp>
 #include <boost/detail/lightweight_mutex.hpp>
 
 #if defined(BOOST_SP_USE_QUICK_ALLOCATOR)
@@ -134,7 +134,7 @@
 #if defined(BOOST_HAS_THREADS)
         mutex_type::scoped_lock lock(mtx_);
 #endif
- if(use_count_ == 0) boost::throw_exception(bad_weak_ptr());
+ if(use_count_ == 0) boost::serialization::throw_exception(bad_weak_ptr());
         ++use_count_;
     }
 
@@ -357,7 +357,7 @@
         if(pi_ == 0)
         {
             d(p); // delete p
- boost::throw_exception(std::bad_alloc());
+ boost::serialization::throw_exception(std::bad_alloc());
         }
 
 #endif
@@ -551,7 +551,7 @@
     }
     else
     {
- boost::throw_exception(bad_weak_ptr());
+ boost::serialization::throw_exception(bad_weak_ptr());
     }
 }
 

Modified: branches/proto/v4/boost/serialization/detail/shared_ptr_132.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/detail/shared_ptr_132.hpp (original)
+++ branches/proto/v4/boost/serialization/detail/shared_ptr_132.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -17,12 +17,12 @@
 #include <boost/config.hpp> // for broken compiler workarounds
 
 #if defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(BOOST_MSVC6_MEMBER_TEMPLATES)
-#include <boost/serializaition/detail/shared_ptr_nmt_132.hpp>
+#include <boost/serialization/detail/shared_ptr_nmt_132.hpp>
 #else
 
 #include <boost/assert.hpp>
 #include <boost/checked_delete.hpp>
-#include <boost/throw_exception.hpp>
+#include <boost/serialization/throw_exception.hpp>
 #include <boost/detail/workaround.hpp>
 
 #include <boost/serialization/access.hpp>
@@ -41,10 +41,6 @@
 
 namespace boost_132 {
 
-#if !BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x560) )
-using namespace boost;
-#endif
-
 template<class T> class weak_ptr;
 template<class T> class enable_shared_from_this;
 
@@ -126,10 +122,10 @@
 
 #if BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x564) )
     template<class Y>
- explicit shared_ptr(Y * p): px(p), pn(p,boost::checked_deleter<Y>()) // Y must be complete
+ explicit shared_ptr(Y * p): px(p), pn(p, boost::checked_deleter<Y>()) // Y must be complete
 #else
     template<class Y>
- explicit shared_ptr(Y * p): px(p), pn(p, checked_deleter<Y>()) // Y must be complete
+ explicit shared_ptr(Y * p): px(p), pn(p, boost::checked_deleter<Y>()) // Y must be complete
 #endif
     {
         detail::sp_enable_shared_from_this( pn, p, p );
@@ -196,7 +192,7 @@
     {
         if(px == 0)
         {
- boost::throw_exception(std::bad_cast());
+ boost::serialization::throw_exception(std::bad_cast());
         }
     }
 

Modified: branches/proto/v4/boost/serialization/detail/shared_ptr_nmt_132.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/detail/shared_ptr_nmt_132.hpp (original)
+++ branches/proto/v4/boost/serialization/detail/shared_ptr_nmt_132.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -16,7 +16,7 @@
 
 #include <boost/assert.hpp>
 #include <boost/checked_delete.hpp>
-#include <boost/throw_exception.hpp>
+#include <boost/serialization/throw_exception.hpp>
 #include <boost/detail/atomic_count.hpp>
 
 #ifndef BOOST_NO_AUTO_PTR
@@ -62,7 +62,7 @@
         if(pn == 0)
         {
             boost::checked_delete(p);
- boost::throw_exception(std::bad_alloc());
+ boost::serialization::throw_exception(std::bad_alloc());
         }
 
 #endif

Modified: branches/proto/v4/boost/serialization/export.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/export.hpp (original)
+++ branches/proto/v4/boost/serialization/export.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -26,13 +26,13 @@
 
 #include <boost/config.hpp>
 #include <boost/static_assert.hpp>
-#include <boost/static_warning.hpp>
 #include <boost/preprocessor/stringize.hpp>
 #include <boost/type_traits/is_polymorphic.hpp>
 
 #ifndef BOOST_SERIALIZATION_DEFAULT_TYPE_INFO
     #include <boost/serialization/extended_type_info_typeid.hpp>
 #endif
+#include <boost/serialization/static_warning.hpp>
 #include <boost/serialization/type_info_implementation.hpp>
 #include <boost/serialization/assume_abstract.hpp>
 #include <boost/serialization/force_include.hpp>

Modified: branches/proto/v4/boost/serialization/extended_type_info_typeid.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/extended_type_info_typeid.hpp (original)
+++ branches/proto/v4/boost/serialization/extended_type_info_typeid.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -20,11 +20,11 @@
 
 #include <typeinfo>
 #include <cstdarg>
-
+#include <cassert>
 #include <boost/config.hpp>
 
 #include <boost/static_assert.hpp>
-#include <boost/static_warning.hpp>
+#include <boost/serialization/static_warning.hpp>
 #include <boost/type_traits/is_polymorphic.hpp>
 #include <boost/type_traits/remove_const.hpp>
 
@@ -112,8 +112,15 @@
             return NULL;
         }
     }
- void destroy(void const * const p) const{
- delete static_cast<T const *>(p) ;
+ void destroy(void const * const p) const {
+ // the only current usage of extended type info is in the
+ // serialization library. The statement below requires
+ // that destructor of type T be public and this creates
+ // a problem for some users. So, for now, comment this
+ // out
+ //delete static_cast<T const *>(p);
+ // and trap any attempt to invoke this function
+ assert(false);
     }
 };
 

Modified: branches/proto/v4/boost/serialization/serialization.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/serialization.hpp (original)
+++ branches/proto/v4/boost/serialization/serialization.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -11,9 +11,9 @@
 #endif
 
 #include <boost/config.hpp>
-#include <boost/strong_typedef.hpp>
-#include <boost/pfto.hpp>
-#include <boost/throw_exception.hpp>
+#include <boost/serialization/strong_typedef.hpp>
+#include <boost/serialization/pfto.hpp>
+#include <boost/serialization/throw_exception.hpp>
 #include <boost/serialization/nvp.hpp>
 
 // incremented for each "release"

Modified: branches/proto/v4/boost/serialization/singleton.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/singleton.hpp (original)
+++ branches/proto/v4/boost/serialization/singleton.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -108,6 +108,7 @@
         return t;
     }
 public:
+ static bool is_destroyed;
     BOOST_DLLEXPORT static T & get_mutable_instance(){
         assert(! is_locked());
         return get_instance();
@@ -115,11 +116,17 @@
     BOOST_DLLEXPORT static const T & get_const_instance(){
         return get_instance();
     }
+ ~singleton(){
+ is_destroyed = true;
+ }
 };
 
 template<class T>
 BOOST_DLLEXPORT T & singleton<T>::instance = singleton<T>::get_instance();
 
+template<class T>
+bool singleton<T>::is_destroyed = false;
+
 } // namespace serialization
 } // namespace boost
 

Modified: branches/proto/v4/boost/serialization/variant.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/variant.hpp (original)
+++ branches/proto/v4/boost/serialization/variant.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -33,7 +33,7 @@
 #include <boost/mpl/size.hpp>
 #include <boost/mpl/empty.hpp>
 
-#include <boost/throw_exception.hpp>
+#include <boost/serialization/throw_exception.hpp>
 
 #include <boost/variant.hpp>
 
@@ -137,7 +137,7 @@
     ar >> BOOST_SERIALIZATION_NVP(which);
     if(which >= mpl::size<types>::value)
         // this might happen if a type was removed from the list of variant types
- boost::throw_exception(
+ boost::serialization::throw_exception(
             boost::archive::archive_exception(
                 boost::archive::archive_exception::unsupported_version
             )
@@ -158,4 +158,3 @@
 } // namespace boost
 
 #endif //BOOST_SERIALIZATION_VARIANT_HPP
-

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -17,7 +17,7 @@
 
 // See http://www.boost.org for updates, documentation, and revision history.
 
-#include <boost/smart_cast.hpp>
+#include <boost/serialization/smart_cast.hpp>
 #include <boost/serialization/singleton.hpp>
 #include <boost/serialization/force_include.hpp>
 #include <boost/serialization/type_info_implementation.hpp>
@@ -33,7 +33,7 @@
 namespace boost {
 namespace serialization {
 
-BOOST_SERIALIZATION_DECL(BOOST_PP_EMPTY()) class extended_type_info;
+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.
@@ -127,15 +127,17 @@
     public void_caster
 {
     virtual void const * downcast(void const * const t) const {
- const Derived * d = boost::smart_cast<const Derived *, const Base *>(
- static_cast<const Base *>(t)
- );
+ const Derived * d =
+ boost::serialization::smart_cast<const Derived *, const Base *>(
+ static_cast<const Base *>(t)
+ );
         return d;
     }
     virtual void const * upcast(void const * const t) const {
- const Base * b = boost::smart_cast<const Base *, const Derived *>(
- static_cast<const Derived *>(t)
- );
+ const Base * b =
+ boost::serialization::smart_cast<const Base *, const Derived *>(
+ static_cast<const Derived *>(t)
+ );
         return b;
     }
 public:

Modified: branches/proto/v4/boost/smart_cast.hpp
==============================================================================
--- branches/proto/v4/boost/smart_cast.hpp (original)
+++ branches/proto/v4/boost/smart_cast.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -6,294 +6,14 @@
 # pragma once
 #endif
 
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// smart_cast.hpp:
+#error "This header is deprecated. Please use: boost/serialization/smart_cast.hpp"
 
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org/libs/serialization for updates, documentation, and revision history.
-
-// casting of pointers and references.
-
-// In casting between different C++ classes, there are a number of
-// rules that have to be kept in mind in deciding whether to use
-// static_cast or dynamic_cast.
-
-// a) dynamic casting can only be applied when one of the types is polymorphic
-// Otherwise static_cast must be used.
-// b) only dynamic casting can do runtime error checking
-// use of static_cast is generally un checked even when compiled for debug
-// c) static_cast would be considered faster than dynamic_cast.
-
-// If casting is applied to a template parameter, there is no apriori way
-// to know which of the two casting methods will be permitted or convenient.
-
-// smart_cast uses C++ type_traits, and program debug mode to select the
-// most convenient cast to use.
-
-#include <exception>
-#include <typeinfo>
-#include <cstddef> // NULL
-
-#include <boost/config.hpp>
-#include <boost/static_assert.hpp>
-
-#include <boost/type_traits/is_base_and_derived.hpp>
-#include <boost/type_traits/is_polymorphic.hpp>
-#include <boost/type_traits/is_pointer.hpp>
-#include <boost/type_traits/is_reference.hpp>
-#include <boost/type_traits/is_same.hpp>
-#include <boost/type_traits/remove_pointer.hpp>
-#include <boost/type_traits/remove_reference.hpp>
-
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/if.hpp>
-#include <boost/mpl/or.hpp>
-#include <boost/mpl/and.hpp>
-#include <boost/mpl/not.hpp>
-#include <boost/mpl/identity.hpp>
-
-namespace boost {
-namespace smart_cast_impl {
-
- template<class T>
- struct reference {
-
- struct polymorphic {
-
- struct linear {
- template<class U>
- static T cast(U & u){
- return static_cast<T>(u);
- }
- };
-
- struct cross {
- template<class U>
- static T cast(U & u){
- return dynamic_cast<T>(u);
- }
- };
-
- template<class U>
- static T cast(U & u){
- // if we're in debug mode
- #if ! defined(NDEBUG) \
- || defined(__BORLANDC__) && (__BORLANDC__ <= 0x560) \
- || defined(__MWERKS__)
- // do a checked dynamic cast
- return cross::cast(u);
- #else
- // borland 5.51 chokes here so we can't use it
- // note: if remove_reference isn't function for these types
- // cross casting will be selected this will work but will
- // not be the most efficient method. This will conflict with
- // the original smart_cast motivation.
- typedef BOOST_DEDUCED_TYPENAME mpl::eval_if<
- BOOST_DEDUCED_TYPENAME mpl::and_<
- mpl::not_<is_base_and_derived<
- BOOST_DEDUCED_TYPENAME remove_reference<T>::type,
- U
- > >,
- mpl::not_<is_base_and_derived<
- U,
- BOOST_DEDUCED_TYPENAME remove_reference<T>::type
- > >
- >,
- // borland chokes w/o full qualification here
- mpl::identity<cross>,
- mpl::identity<linear>
- >::type typex;
- // typex works around gcc 2.95 issue
- return typex::cast(u);
- #endif
- }
- };
-
- struct non_polymorphic {
- template<class U>
- static T cast(U & u){
- return static_cast<T>(u);
- }
- };
- template<class U>
- static T cast(U & u){
- #if defined(__BORLANDC__)
- return mpl::eval_if<
- boost::is_polymorphic<U>,
- mpl::identity<polymorphic>,
- mpl::identity<non_polymorphic>
- >::type::cast(u);
- #else
- typedef BOOST_DEDUCED_TYPENAME mpl::eval_if<
- boost::is_polymorphic<U>,
- mpl::identity<polymorphic>,
- mpl::identity<non_polymorphic>
- >::type typex;
- return typex::cast(u);
- #endif
- }
- };
-
- template<class T>
- struct pointer {
-
- struct polymorphic {
- // unfortunately, this below fails to work for virtual base
- // classes. need has_virtual_base to do this.
- // Subject for further study
- #if 0
- struct linear {
- template<class U>
- static T cast(U * u){
- return static_cast<T>(u);
- }
- };
-
- struct cross {
- template<class U>
- static T cast(U * u){
- T tmp = dynamic_cast<T>(u);
- #ifndef NDEBUG
- if ( tmp == 0 ) throw std::bad_cast();
- #endif
- return tmp;
- }
- };
-
- template<class U>
- static T cast(U * u){
- // if we're in debug mode
- #if ! defined(NDEBUG) || defined(__BORLANDC__) && (__BORLANDC__ <= 0x560)
- // do a checked dynamic cast
- return cross::cast(u);
- #else
- // borland 5.51 chokes here so we can't use it
- // note: if remove_pointer isn't function for these types
- // cross casting will be selected this will work but will
- // not be the most efficient method. This will conflict with
- // the original smart_cast motivation.
- typedef
- BOOST_DEDUCED_TYPENAME mpl::eval_if<
- BOOST_DEDUCED_TYPENAME mpl::and_<
- mpl::not_<is_base_and_derived<
- BOOST_DEDUCED_TYPENAME remove_pointer<T>::type,
- U
- > >,
- mpl::not_<is_base_and_derived<
- U,
- BOOST_DEDUCED_TYPENAME remove_pointer<T>::type
- > >
- >,
- // borland chokes w/o full qualification here
- mpl::identity<cross>,
- mpl::identity<linear>
- >::type typex;
- return typex::cast(u);
- #endif
- }
- #else
- template<class U>
- static T cast(U * u){
- T tmp = dynamic_cast<T>(u);
- #ifndef NDEBUG
- if ( tmp == 0 ) throw std::bad_cast();
- #endif
- return tmp;
- }
- #endif
- };
-
- struct non_polymorphic {
- template<class U>
- static T cast(U * u){
- return static_cast<T>(u);
- }
- };
-
- template<class U>
- static T cast(U * u){
- #if defined(__BORLANDC__)
- return mpl::eval_if<
- boost::is_polymorphic<U>,
- mpl::identity<polymorphic>,
- mpl::identity<non_polymorphic>
- >::type::cast(u);
- #else
- typedef BOOST_DEDUCED_TYPENAME mpl::eval_if<
- boost::is_polymorphic<U>,
- mpl::identity<polymorphic>,
- mpl::identity<non_polymorphic>
- >::type typex;
- return typex::cast(u);
- #endif
- }
-
- };
-
- template<class TPtr>
- struct void_pointer {
- template<class UPtr>
- static TPtr cast(UPtr uptr){
- return static_cast<TPtr>(uptr);
- }
- };
-
- template<class T>
- struct error {
- // if we get here, its because we are using one argument in the
- // cast on a system which doesn't support partial template
- // specialization
- template<class U>
- static T cast(U u){
- BOOST_STATIC_ASSERT(sizeof(T)==0);
- return * static_cast<T *>(NULL);
- }
- };
-
-} // smart_cast_impl
-
-// this implements:
-// smart_cast<Target *, Source *>(Source * s)
-// smart_cast<Target &, Source &>(s)
-// note that it will fail with
-// smart_cast<Target &>(s)
-template<class T, class U>
-T smart_cast(U u) {
- typedef
- BOOST_DEDUCED_TYPENAME mpl::eval_if<
- BOOST_DEDUCED_TYPENAME mpl::or_<
- boost::is_same<void *, U>,
- boost::is_same<void *, T>,
- boost::is_same<const void *, U>,
- boost::is_same<const void *, T>
- >,
- mpl::identity<smart_cast_impl::void_pointer<T> >,
- // else
- BOOST_DEDUCED_TYPENAME mpl::eval_if<boost::is_pointer<U>,
- mpl::identity<smart_cast_impl::pointer<T> >,
- // else
- BOOST_DEDUCED_TYPENAME mpl::eval_if<boost::is_reference<U>,
- mpl::identity<smart_cast_impl::reference<T> >,
- // else
- mpl::identity<smart_cast_impl::error<T>
- >
- >
- >
- >::type typex;
- return typex::cast(u);
-}
-
-// this implements:
-// smart_cast_reference<Target &>(Source & s)
-template<class T, class U>
-T smart_cast_reference(U & u) {
- return smart_cast_impl::reference<T>::cast(u);
-}
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/serialization/smart_cast.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/serialization/smart_cast.hpp"
+#endif
 
-} // namespace boost
+#include <boost/serialization/smart_cast.hpp>
 
 #endif // BOOST_SMART_CAST_HPP

Modified: branches/proto/v4/boost/spirit/home/karma/action/meta_grammar.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/action/meta_grammar.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/action/meta_grammar.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -20,7 +20,7 @@
     // forwards
     ///////////////////////////////////////////////////////////////////////////
     struct action;
-
+
     struct main_meta_grammar;
 
     template <typename Expr, typename Enable>

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -7,6 +7,7 @@
 #define BOOST_SPIRIT_KARMA_AUXILIARY_MAR_26_2007_1225PM
 
 #include <boost/spirit/home/karma/auxiliary/none.hpp>
+#include <boost/spirit/home/karma/auxiliary/confix.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>

Modified: branches/proto/v4/boost/spirit/home/karma/auxiliary/functor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/auxiliary/functor.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/auxiliary/functor.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -178,7 +178,7 @@
     // typedef unspecified type;
     // };
     //
- // which declares the given type as the expected parameter type for
+ // which declares the given type as the expected attribute type for
     // the generator to create.
     ///////////////////////////////////////////////////////////////////////////
     template <typename Functor>
@@ -187,10 +187,10 @@
     {
         return functor_generator<Functor>(func);
     }
-
+
     ///////////////////////////////////////////////////////////////////////////
     // The as_generator_mf generator function is equivalent to the function
- // as_generator above except that the user has explicitly to specify a
+ // as_generator above except that the user has to explicitly specify a
     // type exposing an embedded apply meta function declaring the expected
     // parameter type for the generator to create.
     ///////////////////////////////////////////////////////////////////////////
@@ -200,7 +200,7 @@
     {
         return functor_generator<Functor, ParameterMF>(func, mf);
     }
-
+
     template <typename ParameterMF, typename Functor>
     inline typename result_of::as_generator_mf<Functor, ParameterMF>::type
     as_generator_mf(Functor const& func)

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -22,13 +22,16 @@
     ///////////////////////////////////////////////////////////////////////////
     // forwards
     ///////////////////////////////////////////////////////////////////////////
+ struct main_meta_grammar;
+
     struct none;
     struct eps_generator;
     struct eol_generator;
     struct semantic_predicate;
     struct lazy_generator;
     struct functor_director;
-
+ struct confix_director;
+
     template <typename Expr, typename Enable>
     struct is_valid_expr;
 
@@ -42,20 +45,31 @@
     // none, and lazy
     struct auxiliary_meta_grammar
       : proto::or_<
+ // none
             meta_grammar::empty_terminal_rule<
                 karma::domain, tag::none, none>,
+ // eps
             meta_grammar::empty_terminal_rule<
                 karma::domain, tag::eps, eps_generator>,
+ // eol
             meta_grammar::empty_terminal_rule<
                 karma::domain, tag::eol, eol_generator>,
+ // eps(...)
             meta_grammar::function1_rule<
                 karma::domain, tag::eps, semantic_predicate>,
+ // lazy(...)
             meta_grammar::function1_rule<
                 karma::domain, tag::lazy, lazy_generator>,
+ // functor generators
             meta_grammar::terminal_rule<
                 karma::domain,
                 functor_holder<proto::_, proto::_>,
                 functor_director
+ >,
+ // confix("...", "...")[...]
+ meta_grammar::subscript_rule<
+ karma::domain, tag::confix<proto::_, proto::_>,
+ confix_director, main_meta_grammar
>
>
     {

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -132,7 +132,7 @@
             unused_type)
         {
             BOOST_MPL_ASSERT_MSG(false,
- binary_generator_not_usable_without_parameter, ());
+ binary_generator_not_usable_without_attribute, ());
             return false;
         }
 

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -63,7 +63,7 @@
         generate(Component const&, OutputIterator&, Context&, Delimiter const&,
             unused_type)
         {
- BOOST_MPL_ASSERT_MSG(false, char__not_usable_without_parameter, ());
+ BOOST_MPL_ASSERT_MSG(false, char__not_usable_without_attribute, ());
             return false;
         }
 
@@ -187,7 +187,7 @@
         generate(Component const&, OutputIterator&, Context&, Delimiter const&,
             unused_type)
         {
- BOOST_MPL_ASSERT_MSG(false, char__not_usable_without_parameter, ());
+ BOOST_MPL_ASSERT_MSG(false, char__not_usable_without_attribute, ());
             return false;
         }
 

Modified: branches/proto/v4/boost/spirit/home/karma/directive/detail/center_alignment_generate.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/directive/detail/center_alignment_generate.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/directive/detail/center_alignment_generate.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -35,17 +35,17 @@
         BOOST_MPL_ASSERT_MSG(
             (spirit::traits::is_component<karma::domain, Padding>::value),
             padding_is_not_convertible_to_a_generator, (Context, Padding));
-
+
         typedef
             typename result_of::as_component<karma::domain, Embedded>::type
         embedded;
         typedef
             typename result_of::as_component<karma::domain, Padding>::type
         padding;
-
+
         // wrap the given output iterator to allow left padding
         detail::enable_buffering<OutputIterator> buffering(sink, width);
-
+
         // first generate the embedded output
         embedded ec = spirit::as_component(karma::domain(), e);
         typedef typename embedded::director director;

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -69,7 +69,7 @@
         generate(Component const&, OutputIterator&, Context&, Delimiter const&,
             unused_type)
         {
- BOOST_MPL_ASSERT_MSG(false, int__not_usable_without_parameter, ());
+ BOOST_MPL_ASSERT_MSG(false, int__not_usable_without_attribute, ());
             return false;
         }
 

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -49,8 +49,9 @@
         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));
+ RealPolicies const& p =
+ detail::real_policy<RealPolicies>::get(spirit::subject(component));
+
             bool result = real_inserter<T, RealPolicies, Tag>::
                 call(sink, param, p);
 
@@ -66,7 +67,7 @@
         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_attribute,
                 (Component, Context));
             return false;
         }

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -60,7 +60,7 @@
         generate(Component const&, OutputIterator&, Context&, Delimiter const&,
             unused_type)
         {
- BOOST_MPL_ASSERT_MSG(false, uint_not_usable_without_parameter, ());
+ BOOST_MPL_ASSERT_MSG(false, uint_not_usable_without_attribute, ());
             return false;
         }
 

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -68,7 +68,7 @@
 // generate(Component const&, OutputIterator&, Context&, Delimiter const&,
 // unused_type)
 // {
-// BOOST_MPL_ASSERT_MSG(false, kleene_not_usable_without_parameter, ());
+// BOOST_MPL_ASSERT_MSG(false, kleene_not_usable_without_attribute, ());
 // return false;
 // }
 

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -12,6 +12,7 @@
 #endif
 
 #include <boost/spirit/home/support/component.hpp>
+#include <boost/spirit/home/support/attribute_of.hpp>
 #include <boost/spirit/home/support/attribute_transform.hpp>
 #include <boost/mpl/assert.hpp>
 #include <boost/optional.hpp>
@@ -21,30 +22,44 @@
     namespace detail
     {
         template <typename Parameter>
- inline bool
- optional_is_valid(boost::optional<Parameter> const& opt)
+ struct optional_attribute
         {
- return opt;
- }
+ static inline bool
+ is_valid(boost::optional<Parameter> const& opt)
+ {
+ return opt;
+ }
 
- inline bool
- optional_is_valid(unused_type)
- {
- return true;
- }
+ static inline bool
+ is_valid(Parameter const&)
+ {
+ return true;
+ }
 
- template <typename Parameter>
- inline Parameter const&
- optional_get(boost::optional<Parameter> const& opt)
- {
- return get(opt) ;
- }
+ static inline bool
+ is_valid(unused_type)
+ {
+ return true;
+ }
 
- inline unused_type
- optional_get(unused_type)
- {
- return unused;
- }
+ static inline Parameter const&
+ get(boost::optional<Parameter> const& opt)
+ {
+ return boost::get(opt);
+ }
+
+ static inline Parameter const&
+ get(Parameter const& p)
+ {
+ return p;
+ }
+
+ static inline unused_type
+ get(unused_type)
+ {
+ return unused;
+ }
+ };
     }
 
     struct optional
@@ -71,10 +86,16 @@
                 result_of::subject<Component>::type::director
             director;
 
- if (detail::optional_is_valid(param))
+ typedef typename traits::attribute_of<
+ karma::domain, typename result_of::subject<Component>::type,
+ Context, unused_type
+ >::type attribute_type;
+
+ typedef detail::optional_attribute<attribute_type> optional_type;
+ if (optional_type::is_valid(param))
             {
                 director::generate(subject(component), sink, ctx, d,
- detail::optional_get(param));
+ optional_type::get(param));
             }
             return true;
         }

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -71,7 +71,7 @@
 // generate(Component const&, OutputIterator&, Context&, Delimiter const&,
 // unused_type)
 // {
-// BOOST_MPL_ASSERT_MSG(false, plus_not_usable_without_parameter, ());
+// BOOST_MPL_ASSERT_MSG(false, plus_not_usable_without_attribute, ());
 // return false;
 // }
 

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -103,7 +103,7 @@
         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_attribute,
               (Component, OutputIterator, Delimiter));
             return false;
         }

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -55,7 +55,7 @@
         generate(Component const& component, OutputIterator& sink,
             Context& /*ctx*/, Delimiter const& d, unused_type)
         {
- BOOST_MPL_ASSERT_MSG(false, lit_not_usable_without_parameter, ());
+ BOOST_MPL_ASSERT_MSG(false, lit_not_usable_without_attribute, ());
             return false;
         }
 
@@ -165,7 +165,7 @@
         generate(Component const& component, OutputIterator& sink,
             Context& /*ctx*/, Delimiter const& d, unused_type)
         {
- BOOST_MPL_ASSERT_MSG(false, lit_not_usable_without_parameter, ());
+ BOOST_MPL_ASSERT_MSG(false, lit_not_usable_without_attribute, ());
             return false;
         }
 

Modified: branches/proto/v4/boost/spirit/home/lex/qi/meta_grammar.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/lex/qi/meta_grammar.hpp (original)
+++ branches/proto/v4/boost/spirit/home/lex/qi/meta_grammar.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -27,7 +27,7 @@
 
     struct state_switcher;
     struct state_switcher_context;
-
+
     struct plain_token;
 
     template <typename Expr, typename Enable>

Modified: branches/proto/v4/boost/spirit/home/lex/qi/state/in_state.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/lex/qi/state/in_state.hpp (original)
+++ branches/proto/v4/boost/spirit/home/lex/qi/state/in_state.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -22,7 +22,7 @@
     {
         String name;
     };
-
+
     ///////////////////////////////////////////////////////////////////////////
     // These are the different overloads allowed for the in_state(...)
     // construct
@@ -33,23 +33,26 @@
         proto::terminal<in_state_tag<char const*> >::type that = {{s}};
         return that;
     }
-
+
     inline proto::terminal<in_state_tag<wchar_t const*> >::type
     in_state(wchar_t const *s)
     {
         proto::terminal<in_state_tag<wchar_t const*> >::type that = {{s}};
         return that;
     }
-
+
     template <typename Char, typename Traits, typename Allocator>
- inline proto::terminal<in_state_tag<char const*> >::type
+ inline typename proto::terminal<in_state_tag<Char const*> >::type
     in_state(std::basic_string<Char, Traits, Allocator> const& s)
     {
- typename proto::terminal<in_state_tag<Char const*> >::type that =
- {{s.c_str()}};
+ typedef std::basic_string<Char, Traits, Allocator> string_type;
+
+ typename proto::terminal<in_state_tag<string_type> >::type that;
+ that.s = s;
+
         return that;
     }
-
+
     ///////////////////////////////////////////////////////////////////////////
     // The following is a helper template allowing to use the in_state()[] as
     // a skip parser

Modified: branches/proto/v4/boost/spirit/home/qi/auxiliary.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/auxiliary.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/auxiliary.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -9,6 +9,7 @@
 #define BOOST_SPIRIT_STRING_FEB_03_2007_0355PM
 
 #include <boost/spirit/home/qi/auxiliary/none.hpp>
+#include <boost/spirit/home/qi/auxiliary/confix.hpp>
 #include <boost/spirit/home/qi/auxiliary/eps.hpp>
 #include <boost/spirit/home/qi/auxiliary/lazy.hpp>
 #include <boost/spirit/home/qi/auxiliary/functor.hpp>

Modified: branches/proto/v4/boost/spirit/home/qi/auxiliary/functor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/auxiliary/functor.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/auxiliary/functor.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -175,8 +175,8 @@
     // typedef unspecified type;
     // };
     //
- // which declares the given type as the expected parameter type for
- // the generator to create.
+ // which declares the given type as the expected attribute type for
+ // the parser to create.
     ///////////////////////////////////////////////////////////////////////////
     template <typename Functor>
     inline typename result_of::as_parser<Functor>::type
@@ -187,7 +187,7 @@
     
     ///////////////////////////////////////////////////////////////////////////
     // The as_parser_mf generator function is equivalent to the function
- // as_parser above except that the user has explicitly to specify a
+ // as_parser above except that the user has to explicitly specify a
     // type exposing an embedded apply meta function declaring the expected
     // parameter type for the generator to create.
     ///////////////////////////////////////////////////////////////////////////

Modified: branches/proto/v4/boost/spirit/home/qi/auxiliary/meta_grammar.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/auxiliary/meta_grammar.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/auxiliary/meta_grammar.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -24,11 +24,14 @@
     ///////////////////////////////////////////////////////////////////////////
     // forwards
     ///////////////////////////////////////////////////////////////////////////
+ struct main_meta_grammar;
+
     struct none;
     struct eps_parser;
     struct semantic_predicate;
     struct lazy_parser;
     struct functor_director;
+ struct confix_director;
 
     struct eol_director;
     struct eoi_director;
@@ -50,19 +53,29 @@
     // none, eps and eps(f)
     struct auxiliary_meta_grammar1
       : proto::or_<
+ // none
             meta_grammar::empty_terminal_rule<
                 qi::domain, tag::none, none>
+ // eps
           , meta_grammar::empty_terminal_rule<
                 qi::domain, tag::eps, eps_parser>
+ // eps()
           , meta_grammar::function1_rule<
                 qi::domain, tag::eps, semantic_predicate>
+ // lazy()
           , meta_grammar::function1_rule<
                 qi::domain, tag::lazy, lazy_parser>
+ // functor parser
           , meta_grammar::terminal_rule<
                 qi::domain
               , functor_holder<proto::_, proto::_>
               , functor_director
>
+ // confix(..., ...)[...]
+ , meta_grammar::subscript_rule<
+ qi::domain, tag::confix<proto::_, proto::_>,
+ confix_director, main_meta_grammar
+ >
>
     {
     };

Modified: branches/proto/v4/boost/spirit/home/support/placeholders.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/support/placeholders.hpp (original)
+++ branches/proto/v4/boost/spirit/home/support/placeholders.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -30,7 +30,7 @@
         struct bin {};
         struct oct {};
         struct hex {};
-
+
         struct byte {};
         struct word {};
         struct dword {};
@@ -44,7 +44,7 @@
         struct little_qword {};
 #endif
         struct pad {};
-
+
         struct ushort {};
         struct ulong {};
         struct uint {};
@@ -72,10 +72,10 @@
         struct lazy {};
         struct omit {};
         struct raw {};
-
+
         struct stream {};
         struct wstream {};
-
+
         struct token {};
     }
 

Modified: branches/proto/v4/boost/state_saver.hpp
==============================================================================
--- branches/proto/v4/boost/state_saver.hpp (original)
+++ branches/proto/v4/boost/state_saver.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -6,89 +6,14 @@
 # pragma once
 #endif
 
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// state_saver.hpp:
+#error "This header is deprecated. Please use: boost/serialization/state_saver.hpp"
 
-// (C) Copyright 2003-4 Pavel Vozenilek and Robert Ramey - http://www.rrsd.com.
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org/libs/serialization for updates, documentation, and revision history.
-
-// Inspired by Daryle Walker's iostate_saver concept. This saves the original
-// value of a variable when a state_saver is constructed and restores
-// upon destruction. Useful for being sure that state is restored to
-// variables upon exit from scope.
-
-
-#include <boost/config.hpp>
-#ifndef BOOST_NO_EXCEPTIONS
- #include <exception>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/serialization/state_saver.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/serialization/state_saver.hpp"
 #endif
 
-#include <boost/call_traits.hpp>
-#include <boost/noncopyable.hpp>
-#include <boost/type_traits/has_nothrow_copy.hpp>
-#include <boost/detail/no_exceptions_support.hpp>
-
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/identity.hpp>
-
-namespace boost {
-
-template<class T>
-// T requirements:
-// - POD or object semantic (cannot be reference, function, ...)
-// - copy constructor
-// - operator = (no-throw one preferred)
-class state_saver : private boost::noncopyable
-{
-private:
- const T previous_value;
- T & previous_ref;
-
- struct restore {
- static void invoke(T & previous_ref, const T & previous_value){
- previous_ref = previous_value; // won't throw
- }
- };
-
- struct restore_with_exception {
- static void invoke(T & previous_ref, const T & previous_value){
- BOOST_TRY{
- previous_ref = previous_value;
- }
- BOOST_CATCH(::std::exception &) {
- // we must ignore it - we are in destructor
- }
- BOOST_CATCH_END
- }
- };
-
-public:
- state_saver(
- T & object
- ) :
- previous_value(object),
- previous_ref(object)
- {}
-
- ~state_saver() {
- #ifndef BOOST_NO_EXCEPTIONS
- typedef BOOST_DEDUCED_TYPENAME mpl::eval_if<
- has_nothrow_copy<T>,
- mpl::identity<restore>,
- mpl::identity<restore_with_exception>
- >::type typex;
- typex::invoke(previous_ref, previous_value);
- #else
- previous_ref = previous_value;
- #endif
- }
-
-}; // state_saver<>
-
-} // boost
+#include <boost/serialization/state_saver.hpp>
 
 #endif //BOOST_STATE_SAVER_HPP

Modified: branches/proto/v4/boost/static_warning.hpp
==============================================================================
--- branches/proto/v4/boost/static_warning.hpp (original)
+++ branches/proto/v4/boost/static_warning.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -9,181 +9,14 @@
 # pragma once
 #endif
 
-// http://www.boost.org/LICENSE_1_0.txt)
+#error "This header is deprecated. Please use: boost/serialization/static_warning.hpp"
 
-// See http://www.boost.org/libs/static_assert for documentation.
-
-/*
- Revision history:
- 15 June 2003 - Initial version.
- 31 March 2004 - improved diagnostic messages and portability
- (Jonathan Turkanis)
- 03 April 2004 - works on VC6 at class and namespace scope
- - ported to DigitalMars
- - static warnings disabled by default; when enabled,
- uses pragmas to enable required compiler warnings
- on MSVC, Intel, Metrowerks and Borland 5.x.
- (Jonathan Turkanis)
- 30 May 2004 - tweaked for msvc 7.1 and gcc 3.3
- - static warnings ENabled by default; when enabled,
- (Robert Ramey)
-*/
-
-#include <boost/config.hpp>
-
-//
-// Implementation
-// Makes use of the following warnings:
-// 1. GCC prior to 3.3: division by zero.
-// 2. BCC 6.0 preview: unreferenced local variable.
-// 3. DigitalMars: returning address of local automatic variable.
-// 4. VC6: class previously seen as struct (as in 'boost/mpl/print.hpp')
-// 5. All others: deletion of pointer to incomplete type.
-//
-// The trick is to find code which produces warnings containing the name of
-// a structure or variable. Details, with same numbering as above:
-// 1. static_warning_impl<B>::value is zero iff B is false, so diving an int
-// by this value generates a warning iff B is false.
-// 2. static_warning_impl<B>::type has a constructor iff B is true, so an
-// unreferenced variable of this type generates a warning iff B is false.
-// 3. static_warning_impl<B>::type overloads operator& to return a dynamically
-// allocated int pointer only is B is true, so returning the address of an
-// automatic variable of this type generates a warning iff B is fasle.
-// 4. static_warning_impl<B>::STATIC_WARNING is decalred as a struct iff B is
-// false.
-// 5. static_warning_impl<B>::type is incomplete iff B is false, so deleting a
-// pointer to this type generates a warning iff B is false.
-//
-
-//------------------Enable selected warnings----------------------------------//
-
-// Enable the warnings relied on by BOOST_STATIC_WARNING, where possible. The
-// only pragma which is absolutely necessary here is for Borland 5.x, since
-// W8073 is disabled by default. If enabling selected warnings is considered
-// unacceptable, this section can be replaced with:
-// #if defined(__BORLANDC__) && (__BORLANDC__ <= 0x600)
-// pragma warn +stu
-// #endif
-
-# if defined(BOOST_MSVC)
-# pragma warning(2:4150) // C4150: deletion of pointer to incomplete type 'type'.
-# elif defined(BOOST_INTEL) && (defined(__WIN32__) || defined(WIN32))
-# pragma warning(2:457) // #457: delete of pointer to incomplete class.
-# elif defined(__BORLANDC__) && (__BORLANDC__ <= 0x600)
-# pragma warn +stu // W8073: Undefined structure 'structure'.
-# elif defined(__MWERKS__)
-# pragma extended_errorcheck on // Enable 'extended error checking'.
-# endif
-
-//------------------Configure-------------------------------------------------//
-# if defined(BOOST_INTEL)
-# elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x600)
-# define BOOST_HAS_DESCRIPTIVE_UNREFERENCED_VARIABLE_WARNING
-# elif defined(__PGI)
-# define BOOST_HAS_DESCRIPTIVE_DIVIDE_BY_ZERO_WARNING
-# elif defined(__GNUC__) && !defined(BOOST_INTEL) // && (__GNUC__ * 100 + __GNUC_MINOR__ <= 302)
-# define BOOST_HAS_DESCRIPTIVE_DIVIDE_BY_ZERO_WARNING
-# elif defined(__DECCXX) // for Tru64
-# define BOOST_HAS_DESCRIPTIVE_DIVIDE_BY_ZERO_WARNING
-# elif defined(__DMC__)
-# define BOOST_HAS_DESCRIPTIVE_RETURNING_ADDRESS_OF_TEMPORARY_WARNING
-# elif defined(BOOST_MSVC) // && (BOOST_MSVC < 1300)
-# define BOOST_NO_PREDEFINED_LINE_MACRO
-# pragma warning(disable:4094) // C4094: untagged 'struct' declared no symbols
-# else
-# define BOOST_HAS_DESCRIPTIVE_INCOMPLETE_TYPE_WARNING
-#endif
-
-//------------------Helper templates------------------------------------------//
-
-namespace boost {
-
-struct STATIC_WARNING;
-
-template<bool>
-struct static_warning_impl;
-
-template<>
-struct static_warning_impl<false> {
- enum { value = 0 };
- #if !defined(BOOST_HAS_DESCRIPTIVE_UNREFERENCED_VARIABLE_WARNING) && \
- !defined(BOOST_HAS_DESCRIPTIVE_RETURNING_ADDRESS_OF_TEMPORARY_WARNING)
- typedef boost::STATIC_WARNING type;
- #else
- typedef int type;
- #endif
- #if defined(BOOST_NO_PREDEFINED_LINE_MACRO)
- struct STATIC_WARNING { };
- #endif
-};
-
-template<>
-struct static_warning_impl<true> {
- enum { value = 1 };
- struct type { type() { } int* operator&() { return new int; } };
- #if defined(BOOST_NO_PREDEFINED_LINE_MACRO)
- class STATIC_WARNING { };
- #endif
-};
-
-} // namespace boost
-
-//------------------Definition of BOOST_STATIC_WARNING------------------------//
-
-#if defined(BOOST_HAS_DESCRIPTIVE_UNREFERENCED_VARIABLE_WARNING)
-# define BOOST_STATIC_WARNING_IMPL(B) \
- struct BOOST_JOIN(STATIC_WARNING, __LINE__) { \
- void f() { \
- ::boost::static_warning_impl<(bool)( B )>::type \
- STATIC_WARNING; \
- } \
- } \
- /**/
-#elif defined(BOOST_HAS_DESCRIPTIVE_RETURNING_ADDRESS_OF_TEMPORARY_WARNING)
-# define BOOST_STATIC_WARNING_IMPL(B) \
- struct BOOST_JOIN(STATIC_WARNING, __LINE__) { \
- int* f() { \
- ::boost::static_warning_impl<(bool)( B )>::type \
- STATIC_WARNING; \
- return &STATIC_WARNING; \
- } \
- } \
- /**/
-#elif defined(BOOST_HAS_DESCRIPTIVE_DIVIDE_BY_ZERO_WARNING)
-# define BOOST_STATIC_WARNING_IMPL(B) \
- struct BOOST_JOIN(STATIC_WARNING, __LINE__) { \
- int f() { \
- int STATIC_WARNING = 1; \
- return STATIC_WARNING / \
- boost::static_warning_impl<(bool)( B )>::value; } \
- } \
- /**/
-#elif defined(BOOST_NO_PREDEFINED_LINE_MACRO)
- // VC6; __LINE__ macro broken when -ZI is used see Q199057, so
- // non-conforming workaround is used.
-# define BOOST_STATIC_WARNING_IMPL(B) \
- struct { \
- struct S { \
- typedef boost::static_warning_impl<(bool)( B )> f; \
- friend class f::STATIC_WARNING; \
- }; \
- } \
- /**/
-#elif defined(BOOST_HAS_DESCRIPTIVE_INCOMPLETE_TYPE_WARNING)
-# define BOOST_STATIC_WARNING_IMPL(B) \
- struct BOOST_JOIN(STATIC_WARNING, __LINE__) { \
- ::boost::static_warning_impl<(bool)( B )>::type* p; \
- void f() { delete p; } \
- } \
- /**/
-#else // not defined for this compiler
-# define BOOST_STATIC_WARNING_IMPL(B)
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/serialization/static_warning.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/serialization/static_warning.hpp"
 #endif
 
-#ifndef BOOST_DISABLE_STATIC_WARNINGS
-# define BOOST_STATIC_WARNING(B) BOOST_STATIC_WARNING_IMPL(B)
-#else // #ifdef BOOST_ENABLE_STATIC_WARNINGS //-------------------------------//
-# define BOOST_STATIC_WARNING(B) BOOST_STATIC_WARNING_IMPL(true)
-#endif
+#include <boost/serialization/static_warning.hpp>
 
 #endif // BOOST_STATIC_WARNING_HPP

Modified: branches/proto/v4/boost/strong_typedef.hpp
==============================================================================
--- branches/proto/v4/boost/strong_typedef.hpp (original)
+++ branches/proto/v4/boost/strong_typedef.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -6,61 +6,14 @@
 # pragma once
 #endif
 
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// strong_typedef.hpp:
+#error "This header is deprecated. Please use: boost/serialization/strong_typedef.hpp"
 
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org/libs/serialization for updates, documentation, and revision history.
-
-// macro used to implement a strong typedef. strong typedef
-// guarentees that two types are distinguised even though the
-// share the same underlying implementation. typedef does not create
-// a new type. BOOST_STRONG_TYPEDEF(T, D) creates a new type named D
-// that operates as a type T.
-
-#include <boost/config.hpp>
-#include <boost/operators.hpp>
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+# pragma message ("Warning: This header is deprecated. Please use: boost/serialization/strong_typedef.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+# warning "This header is deprecated. Please use: boost/serialization/strong_typedef.hpp"
+#endif
 
-#if !defined(__BORLANDC__) || __BORLANDC__ >= 0x590
- #define BOOST_STRONG_TYPEDEF(T, D) \
- struct D \
- : boost::totally_ordered1< D \
- , boost::totally_ordered2< D, T \
- > > \
- { \
- T t; \
- explicit D(const T t_) : t(t_) {}; \
- D(){}; \
- D(const D & t_) : t(t_.t){} \
- D & operator=(const D & rhs) { t = rhs.t; return *this;} \
- D & operator=(const T & rhs) { t = rhs; return *this;} \
- operator const T & () const {return t; } \
- operator T & () { return t; } \
- bool operator==(const D & rhs) const { return t == rhs.t; } \
- bool operator<(const D & rhs) const { return t < rhs.t; } \
- };
-#else
- #define BOOST_STRONG_TYPEDEF(T, D) \
- struct D \
- : boost::totally_ordered1< D \
- , boost::totally_ordered2< D, T \
- > > \
- { \
- T t; \
- explicit D(const T t_) : t(t_) {}; \
- D(){}; \
- D(const D & t_) : t(t_.t){} \
- D & operator=(const D & rhs) { t = rhs.t; return *this;} \
- D & operator=(const T & rhs) { t = rhs; return *this;} \
- /*operator const T & () const {return t; }*/ \
- operator T & () { return t; } \
- bool operator==(const D & rhs) const { return t == rhs.t; } \
- bool operator<(const D & rhs) const { return t < rhs.t; } \
- };
-#endif // !defined(__BORLANDC) || __BORLANDC__ >= 0x590
+#include <boost/serialization/pfto.hpp>
 
 #endif // BOOST_STRONG_TYPEDEF_HPP

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -382,6 +382,9 @@
 
     };
 
+ // predefined error_code object used as "throw on error" tag
+ BOOST_SYSTEM_DECL extern error_code throws;
+
     // non-member functions ------------------------------------------------//
 
     inline bool operator!=( const error_code & lhs,

Modified: branches/proto/v4/boost/thread/locks.hpp
==============================================================================
--- branches/proto/v4/boost/thread/locks.hpp (original)
+++ branches/proto/v4/boost/thread/locks.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -234,6 +234,12 @@
         {
             try_lock();
         }
+ template<typename TimeDuration>
+ unique_lock(Mutex& m_,TimeDuration const& target_time):
+ m(&m_),is_locked(false)
+ {
+ timed_lock(target_time);
+ }
         unique_lock(Mutex& m_,system_time const& target_time):
             m(&m_),is_locked(false)
         {

Modified: branches/proto/v4/boost/thread/win32/basic_recursive_mutex.hpp
==============================================================================
--- branches/proto/v4/boost/thread/win32/basic_recursive_mutex.hpp (original)
+++ branches/proto/v4/boost/thread/win32/basic_recursive_mutex.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -64,11 +64,6 @@
                 return timed_lock(get_system_time()+timeout);
             }
 
- long get_active_count()
- {
- return mutex.get_active_count();
- }
-
             void unlock()
             {
                 if(!--recursion_count)
@@ -78,11 +73,6 @@
                 }
             }
 
- bool locked()
- {
- return mutex.locked();
- }
-
         private:
             bool try_recursive_lock(long current_thread_id)
             {

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -123,11 +123,6 @@
                 return timed_lock(system_time(timeout));
             }
 
- long get_active_count()
- {
- return ::boost::detail::interlocked_read_acquire(&active_count);
- }
-
             void unlock()
             {
                 long const offset=lock_flag_value;
@@ -141,11 +136,6 @@
                 }
             }
 
- bool locked()
- {
- return get_active_count()>=lock_flag_value;
- }
-
         private:
             void* get_event()
             {

Modified: branches/proto/v4/boost/throw_exception.hpp
==============================================================================
--- branches/proto/v4/boost/throw_exception.hpp (original)
+++ branches/proto/v4/boost/throw_exception.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -24,8 +24,8 @@
 #include <boost/detail/workaround.hpp>
 #include <exception>
 
-#if !defined( BOOST_EXCEPTION_DISABLE ) && defined( BOOST_NO_TYPEID )
-# define BOOST_EXCEPTION_DISABLE
+#if !defined( BOOST_EXCEPTION_DISABLE )
+#define BOOST_EXCEPTION_DISABLE
 #endif
 
 #if !defined( BOOST_EXCEPTION_DISABLE ) && defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, < 0x590 )
@@ -37,8 +37,14 @@
 #endif
 
 #if !defined( BOOST_NO_EXCEPTIONS ) && !defined( BOOST_EXCEPTION_DISABLE )
-# include <boost/exception/enable_current_exception.hpp>
-# include <boost/exception/enable_error_info.hpp>
+# include <boost/exception/exception.hpp>
+# include <boost/current_function.hpp>
+# define BOOST_THROW_EXCEPTION(x) ::boost::throw_exception(::boost::enable_error_info(x) <<\
+ ::boost::throw_function(BOOST_CURRENT_FUNCTION) <<\
+ ::boost::throw_file(__FILE__) <<\
+ ::boost::throw_line((int)__LINE__))
+#else
+# define BOOST_THROW_EXCEPTION(x) ::boost::throw_exception(x)
 #endif
 
 namespace boost

Modified: branches/proto/v4/boost/tr1/cmath.hpp
==============================================================================
--- branches/proto/v4/boost/tr1/cmath.hpp (original)
+++ branches/proto/v4/boost/tr1/cmath.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -13,7 +13,7 @@
 # include_next BOOST_TR1_HEADER(cmath)
 # else
 # include <boost/tr1/detail/config_all.hpp>
-# include BOOST_TR1_STD_HEADER(BOOST_TR1_PATH(cmath))
+# include BOOST_TR1_HEADER(cmath)
 # endif
 
 #else

Modified: branches/proto/v4/boost/tr1/complex.hpp
==============================================================================
--- branches/proto/v4/boost/tr1/complex.hpp (original)
+++ branches/proto/v4/boost/tr1/complex.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -8,6 +8,34 @@
 # include <boost/tr1/detail/config.hpp>
 # include <complex>
 
+#ifndef BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG
+
+#include <boost/math/complex.hpp>
+
+namespace std {
+namespace tr1 {
+
+using boost::math::acos;
+using boost::math::asin;
+using boost::math::atan;
+using boost::math::acosh;
+using boost::math::asinh;
+using boost::math::atanh;
+using boost::math::fabs;
+
+} }
+
+#else
+
+# ifdef BOOST_HAS_INCLUDE_NEXT
+# include_next BOOST_TR1_HEADER(complex)
+# else
+# include <boost/tr1/detail/config_all.hpp>
+# include BOOST_TR1_STD_HEADER(BOOST_TR1_PATH(complex))
+# endif
+
+#endif
+
 #ifndef BOOST_HAS_TR1_COMPLEX_OVERLOADS
 
 #include <boost/tr1/detail/math_overloads.hpp>
@@ -212,33 +240,5 @@
 
 #endif
 
-#ifndef BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG
-
-#include <boost/math/complex.hpp>
-
-namespace std {
-namespace tr1 {
-
-using boost::math::acos;
-using boost::math::asin;
-using boost::math::atan;
-using boost::math::acosh;
-using boost::math::asinh;
-using boost::math::atanh;
-using boost::math::fabs;
-
-} }
-
-#else
-
-# ifdef BOOST_HAS_INCLUDE_NEXT
-# include_next BOOST_TR1_HEADER(complex)
-# else
-# include <boost/tr1/detail/config_all.hpp>
-# include BOOST_TR1_STD_HEADER(BOOST_TR1_PATH(complex))
-# endif
-
-#endif
-
 #endif
 

Modified: branches/proto/v4/boost/tr1/detail/config.hpp
==============================================================================
--- branches/proto/v4/boost/tr1/detail/config.hpp (original)
+++ branches/proto/v4/boost/tr1/detail/config.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -54,6 +54,11 @@
 # define BOOST_HAS_TR1
 #endif
 
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+# define BOOST_HAS_TR1_COMPLEX_OVERLOADS
+# define BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG
+#endif
+
 #ifdef BOOST_HAS_TR1
    // turn on support for everything:
 # define BOOST_HAS_TR1_ARRAY
@@ -73,6 +78,7 @@
 # define BOOST_HAS_TR1_UTILITY
 # define BOOST_HAS_TR1_UNORDERED_MAP
 # define BOOST_HAS_TR1_UNORDERED_SET
+# define BOOST_HAS_TR1_CMATH
 
 #endif
 
@@ -90,8 +96,10 @@
 #ifdef BOOST_HAS_GCC_TR1
    // turn on support for everything in gcc 4.0.x:
 # define BOOST_HAS_TR1_ARRAY
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 403
 //# define BOOST_HAS_TR1_COMPLEX_OVERLOADS
-//# define BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG
+# define BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG
+#endif
 # define BOOST_HAS_TR1_REFERENCE_WRAPPER
 # define BOOST_HAS_TR1_RESULT_OF
 # define BOOST_HAS_TR1_MEM_FN
@@ -99,8 +107,13 @@
 # define BOOST_HAS_TR1_FUNCTION
 # define BOOST_HAS_TR1_HASH
 # define BOOST_HAS_TR1_SHARED_PTR
-//# define BOOST_HAS_TR1_RANDOM
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 403
+# define BOOST_HAS_TR1_RANDOM
 //# define BOOST_HAS_TR1_REGEX
+#ifdef _GLIBCXX_USE_C99_MATH_TR1
+# define BOOST_HAS_TR1_CMATH
+#endif
+#endif
 # define BOOST_HAS_TR1_TUPLE
 # define BOOST_HAS_TR1_TYPE_TRAITS
 # define BOOST_HAS_TR1_UTILITY

Modified: branches/proto/v4/boost/tr1/detail/config_all.hpp
==============================================================================
--- branches/proto/v4/boost/tr1/detail/config_all.hpp (original)
+++ branches/proto/v4/boost/tr1/detail/config_all.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -46,6 +46,8 @@
 # ifdef __SUNPRO_CC
          // can't use <../stlport/name> since some compilers put stlport in a different directory:
 # define BOOST_TR1_STD_HEADER(name) <../stlport4/name>
+# elif defined(__PGI)
+# define BOOST_TR1_STD_HEADER(name) <../CC/name>
 # else
 # define BOOST_TR1_STD_HEADER(name) <../stlport/name>
 # endif
@@ -90,6 +92,9 @@
 #if defined(__GNUC__) && !defined(BOOST_HAS_INCLUDE_NEXT)
 # define BOOST_HAS_INCLUDE_NEXT
 #endif
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+# define BOOST_HAS_CPP_0X
+#endif
 
 //
 // We may be in the middle of parsing boost/config.hpp

Modified: branches/proto/v4/boost/tr1/tr1/array
==============================================================================
--- branches/proto/v4/boost/tr1/tr1/array (original)
+++ branches/proto/v4/boost/tr1/tr1/array 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -1,22 +1,34 @@
-// (C) Copyright John Maddock 2005.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-#if !defined(BOOST_TR1_ARRAY_INCLUDED)
-# define BOOST_TR1_ARRAY_INCLUDED
-# define BOOST_TR1_NO_RECURSION
-# include <boost/tr1/detail/config_all.hpp>
-# ifdef BOOST_HAS_TR1_ARRAY
-# ifdef BOOST_HAS_INCLUDE_NEXT
-# include_next BOOST_TR1_HEADER(array)
-# else
-# include BOOST_TR1_STD_HEADER(BOOST_TR1_PATH(array))
-# endif
-# else
-# include <boost/tr1/array.hpp>
-# endif
-# undef BOOST_TR1_NO_RECURSION
-#endif
-
+// (C) Copyright John Maddock 2005.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+#if !defined(BOOST_TR1_ARRAY_INCLUDED)
+# define BOOST_TR1_ARRAY_INCLUDED
+# include <boost/tr1/detail/config_all.hpp>
+
+# ifdef BOOST_HAS_CPP_0X
+# ifdef BOOST_HAS_INCLUDE_NEXT
+# include_next <array>
+# else
+# include BOOST_TR1_STD_HEADER(array)
+# endif
+# endif
+
+# if !defined(BOOST_TR1_NO_RECURSION)
+# define BOOST_TR1_NO_RECURSION
+# ifdef BOOST_HAS_TR1_ARRAY
+# ifdef BOOST_HAS_INCLUDE_NEXT
+# include_next BOOST_TR1_HEADER(array)
+# else
+# include BOOST_TR1_STD_HEADER(BOOST_TR1_PATH(array))
+# endif
+# else
+# include <boost/tr1/array.hpp>
+# endif
+# undef BOOST_TR1_NO_RECURSION
+#endif
+#endif
+
+

Modified: branches/proto/v4/boost/tr1/tr1/random
==============================================================================
--- branches/proto/v4/boost/tr1/tr1/random (original)
+++ branches/proto/v4/boost/tr1/tr1/random 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -6,8 +6,18 @@
 
 #ifndef BOOST_TR1_RANDOM_INCLUDED
 # define BOOST_TR1_RANDOM_INCLUDED
-# define BOOST_TR1_NO_RECURSION
 # include <boost/tr1/detail/config_all.hpp>
+
+# ifdef BOOST_HAS_CPP_0X
+# ifdef BOOST_HAS_INCLUDE_NEXT
+# include_next <random>
+# else
+# include BOOST_TR1_STD_HEADER(random)
+# endif
+# endif
+
+# if !defined(BOOST_TR1_NO_RECURSION)
+# define BOOST_TR1_NO_RECURSION
 # ifdef BOOST_HAS_TR1_RANDOM
 # ifdef BOOST_HAS_INCLUDE_NEXT
 # include_next BOOST_TR1_HEADER(random)
@@ -18,5 +28,7 @@
 # include <boost/tr1/random.hpp>
 # endif
 # undef BOOST_TR1_NO_RECURSION
+# endif
 #endif
 
+

Modified: branches/proto/v4/boost/tr1/tr1/tuple
==============================================================================
--- branches/proto/v4/boost/tr1/tr1/tuple (original)
+++ branches/proto/v4/boost/tr1/tr1/tuple 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -6,8 +6,18 @@
 
 #ifndef BOOST_TR1_TUPLE_INCLUDED
 # define BOOST_TR1_TUPLE_INCLUDED
-# define BOOST_TR1_NO_RECURSION
 # include <boost/tr1/detail/config_all.hpp>
+
+# ifdef BOOST_HAS_CPP_0X
+# ifdef BOOST_HAS_INCLUDE_NEXT
+# include_next <tuple>
+# else
+# include BOOST_TR1_STD_HEADER(tuple)
+# endif
+# endif
+
+# if !defined(BOOST_TR1_NO_RECURSION)
+# define BOOST_TR1_NO_RECURSION
 # ifdef BOOST_HAS_TR1_TUPLE
 # ifdef BOOST_HAS_INCLUDE_NEXT
 # include_next BOOST_TR1_HEADER(tuple)
@@ -18,5 +28,7 @@
 # include <boost/tr1/tuple.hpp>
 # endif
 # undef BOOST_TR1_NO_RECURSION
+# endif
 #endif
 
+

Modified: branches/proto/v4/boost/tr1/tr1/type_traits
==============================================================================
--- branches/proto/v4/boost/tr1/tr1/type_traits (original)
+++ branches/proto/v4/boost/tr1/tr1/type_traits 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -4,17 +4,40 @@
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
 
+#include <boost/tr1/detail/config_all.hpp>
+
+#if (!defined(BOOST_TR1_TYPE_TRAITS_INCLUDED) || defined(BOOST_TR1_NO_RECURSION)) && defined(BOOST_HAS_CPP_0X)
 #ifndef BOOST_TR1_TYPE_TRAITS_INCLUDED
 # define BOOST_TR1_TYPE_TRAITS_INCLUDED
-# include <boost/tr1/detail/config_all.hpp>
-# ifdef BOOST_HAS_TR1_TYPE_TRAITS
-# ifdef BOOST_HAS_INCLUDE_NEXT
-# include_next BOOST_TR1_HEADER(type_traits)
-# else
-# include BOOST_TR1_STD_HEADER(BOOST_TR1_PATH(type_traits))
-# endif
+#endif
+# ifdef BOOST_TR1_NO_TYPE_TRAITS_RECURSION2
+# define BOOST_TR1_NO_TYPE_TRAITS_RECURSION3
+# elif defined(BOOST_TR1_NO_TYPE_TRAITS_RECURSION)
+# define BOOST_TR1_NO_TYPE_TRAITS_RECURSION2
+# elif !defined(BOOST_TR1_NO_RECURSION)
+# define BOOST_TR1_NO_RECURSION
+# define BOOST_TR1_NO_TYPE_TRAITS_RECURSION
+# endif
+# ifdef BOOST_HAS_INCLUDE_NEXT
+# include_next <type_traits>
 # else
-# include <boost/tr1/type_traits.hpp>
+# include BOOST_TR1_STD_HEADER(type_traits)
+# endif
+#ifdef BOOST_TR1_NO_TYPE_TRAITS_RECURSION3
+# undef BOOST_TR1_NO_TYPE_TRAITS_RECURSION3
+#elif defined(BOOST_TR1_NO_TYPE_TRAITS_RECURSION2)
+# undef BOOST_TR1_NO_TYPE_TRAITS_RECURSION2
+#elif defined(BOOST_TR1_NO_TYPE_TRAITS_RECURSION)
+# undef BOOST_TR1_NO_RECURSION
+# undef BOOST_TR1_NO_TYPE_TRAITS_RECURSION
 # endif
 #endif
 
+#if !defined(BOOST_TR1_FULL_TYPE_TRAITS_INCLUDED) && !defined(BOOST_TR1_NO_RECURSION)
+# define BOOST_TR1_FULL_TYPE_TRAITS_INCLUDED
+# define BOOST_TR1_NO_RECURSION
+# include <boost/tr1/type_traits.hpp>
+# undef BOOST_TR1_NO_RECURSION
+#endif
+
+

Modified: branches/proto/v4/boost/tr1/tr1/unordered_map
==============================================================================
--- branches/proto/v4/boost/tr1/tr1/unordered_map (original)
+++ branches/proto/v4/boost/tr1/tr1/unordered_map 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -6,8 +6,18 @@
 
 #ifndef BOOST_TR1_UNORDERED_MAP_INCLUDED
 # define BOOST_TR1_UNORDERED_MAP_INCLUDED
-# define BOOST_TR1_NO_RECURSION
 # include <boost/tr1/detail/config_all.hpp>
+
+# ifdef BOOST_HAS_CPP_0X
+# ifdef BOOST_HAS_INCLUDE_NEXT
+# include_next <unordered_map>
+# else
+# include BOOST_TR1_STD_HEADER(unordered_map)
+# endif
+# endif
+
+# if !defined(BOOST_TR1_NO_RECURSION)
+# define BOOST_TR1_NO_RECURSION
 # ifdef BOOST_HAS_TR1_UNORDERED_MAP
 # ifdef BOOST_HAS_INCLUDE_NEXT
 # include_next BOOST_TR1_HEADER(unordered_map)
@@ -18,5 +28,7 @@
 # include <boost/tr1/unordered_map.hpp>
 # endif
 # undef BOOST_TR1_NO_RECURSION
+# endif
 #endif
 
+

Modified: branches/proto/v4/boost/tr1/tr1/unordered_set
==============================================================================
--- branches/proto/v4/boost/tr1/tr1/unordered_set (original)
+++ branches/proto/v4/boost/tr1/tr1/unordered_set 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -6,8 +6,18 @@
 
 #ifndef BOOST_TR1_UNORDERED_SET_INCLUDED
 # define BOOST_TR1_UNORDERED_SET_INCLUDED
-# define BOOST_TR1_NO_RECURSION
 # include <boost/tr1/detail/config_all.hpp>
+
+# ifdef BOOST_HAS_CPP_0X
+# ifdef BOOST_HAS_INCLUDE_NEXT
+# include_next <unordered_map>
+# else
+# include BOOST_TR1_STD_HEADER(unordered_map)
+# endif
+# endif
+
+# if !defined(BOOST_TR1_NO_RECURSION)
+# define BOOST_TR1_NO_RECURSION
 # ifdef BOOST_HAS_TR1_UNORDERED_SET
 # ifdef BOOST_HAS_INCLUDE_NEXT
 # include_next BOOST_TR1_HEADER(unordered_set)
@@ -18,5 +28,7 @@
 # include <boost/tr1/unordered_set.hpp>
 # endif
 # undef BOOST_TR1_NO_RECURSION
+# endif
 #endif
 
+

Modified: branches/proto/v4/boost/utility/value_init.hpp
==============================================================================
--- branches/proto/v4/boost/utility/value_init.hpp (original)
+++ branches/proto/v4/boost/utility/value_init.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -7,6 +7,7 @@
 // 21 Ago 2002 (Created) Fernando Cacciola
 // 24 Dec 2007 (Refactored and worked around various compiler bugs) Fernando Cacciola, Niels Dekker
 // 23 May 2008 (Fixed operator= const issue, added initialized_value) Niels Dekker, Fernando Cacciola
+// 21 Ago 2008 (Added swap) Niels Dekker, Fernando Cacciola
 //
 #ifndef BOOST_UTILITY_VALUE_INIT_21AGO2002_HPP
 #define BOOST_UTILITY_VALUE_INIT_21AGO2002_HPP
@@ -22,6 +23,7 @@
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/cv_traits.hpp>
 #include <boost/type_traits/alignment_of.hpp>
+#include <boost/swap.hpp>
 #include <cstring>
 #include <new>
 
@@ -93,6 +95,11 @@
       return wrapper_address()->data;
     }
 
+ void swap(value_initialized & arg)
+ {
+ ::boost::swap( this->data(), arg.data() );
+ }
+
     operator T&() const { return this->data(); }
 
 } ;
@@ -110,6 +117,12 @@
   return x.data() ;
 }
 
+template<class T>
+void swap ( value_initialized<T> & lhs, value_initialized<T> & rhs )
+{
+ lhs.swap(rhs) ;
+}
+
 
 class initialized_value_t
 {

Modified: branches/proto/v4/boost/version.hpp
==============================================================================
--- branches/proto/v4/boost/version.hpp (original)
+++ branches/proto/v4/boost/version.hpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -19,7 +19,7 @@
 // BOOST_VERSION / 100 % 1000 is the minor version
 // BOOST_VERSION / 100000 is the major version
 
-#define BOOST_VERSION 103600
+#define BOOST_VERSION 103700
 
 //
 // BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
@@ -27,7 +27,7 @@
 // number, y is the minor version number, and z is the patch level if not 0.
 // This is used by <config/auto_link.hpp> to select which library version to link to.
 
-#define BOOST_LIB_VERSION "1_36"
+#define BOOST_LIB_VERSION "1_37"
 
 #endif
 

Modified: branches/proto/v4/index.html
==============================================================================
--- branches/proto/v4/index.html (original)
+++ branches/proto/v4/index.html 2008-09-05 00:13:30 EDT (Fri, 05 Sep 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.36.0</h2>
+ <h2 style="text-align: center">Release 1.37.0</h2>
       </td>
     </tr>
   </table>

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -96,10 +96,29 @@
 
 }
 
+template<typename Pred, typename Input>
+void test_pred(const Pred& pred, const Input& input, bool bYes)
+{
+ // test assignment operator
+ Pred pred1=pred;
+ pred1=pred;
+ pred1=pred1;
+ if(bYes)
+ {
+ BOOST_CHECK( all( input, pred ) );
+ BOOST_CHECK( all( input, pred1 ) );
+ }
+ else
+ {
+ BOOST_CHECK( !all( input, pred ) );
+ BOOST_CHECK( !all( input, pred1 ) );
+ }
+}
+
 #define TEST_CLASS( Pred, YesInput, NoInput )\
 {\
- BOOST_CHECK( all( string(YesInput), Pred ) );\
- BOOST_CHECK( !all( string(NoInput), Pred ) );\
+ test_pred(Pred, YesInput, true); \
+ test_pred(Pred, NoInput, false); \
 }
 
 void classification_test()

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -246,4 +246,12 @@
 * [@boost_asio/example/local/stream_client.cpp]
 
 
+[heading Windows]
+
+An example showing how to use the Windows-specific function `TransmitFile`
+with Boost.Asio.
+
+* [@boost_asio/example/windows/transmit_file.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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -393,6 +393,7 @@
         <entry valign="top" namest="c" nameend="d">
           <bridgehead renderas="sect3">Classes</bridgehead>
           <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.windows__overlapped_ptr">windows::overlapped_ptr</link></member>
             <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>

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -291,7 +291,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of one or more calls to the stream's async\_read\_some function.
+This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function.
 
 
 [heading Parameters]
@@ -382,15 +382,15 @@
 
 [[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 completion_condition(
+ // Result of latest async_read_some operation.
+ const boost::system::error_code& error,
 
- std::size_t bytes_transferred // Number of bytes transferred
- // so far.
+ // 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 stream's async\_read\_some function are required.]]
+A return value of 0 indicates that the read operation is complete. A non-zero return value indicates the maximum number of bytes to be read on the next call to the stream's async\_read\_some function.]]
 
 [[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:
 ``
@@ -447,7 +447,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of one or more calls to the stream's async\_read\_some function.
+This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function.
 
 
 [heading Parameters]
@@ -514,7 +514,7 @@
 
 * The completion_condition function object returns true.
 
-This operation is implemented in terms of one or more calls to the stream's async\_read\_some function.
+This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function.
 
 
 [heading Parameters]
@@ -528,15 +528,15 @@
 
 [[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 completion_condition(
+ // Result of latest async_read_some operation.
+ const boost::system::error_code& error,
 
- std::size_t bytes_transferred // Number of bytes transferred
- // so far.
+ // 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 stream's async\_read\_some function are required.]]
+A return value of 0 indicates that the read operation is complete. A non-zero return value indicates the maximum number of bytes to be read on the next call to the stream's async\_read\_some function.]]
 
 [[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:
 ``
@@ -632,7 +632,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of one or more calls to the device's async\_read\_some\_at function.
+This operation is implemented in terms of zero or more calls to the device's async\_read\_some\_at function.
 
 
 [heading Parameters]
@@ -728,15 +728,15 @@
 
 [[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.
+ std::size_t completion_condition(
+ // Result of latest async_read_some_at operation.
      const boost::system::error_code& error,
 
      // Number of bytes transferred so far.
      std::size_t bytes_transferred
    );
 ``
-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.]]
+A return value of 0 indicates that the read operation is complete. A non-zero return value indicates the maximum number of bytes to be read on the next call to the device's async\_read\_some\_at function.]]
 
 [[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:
 ``
@@ -794,7 +794,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of one or more calls to the device's async\_read\_some\_at function.
+This operation is implemented in terms of zero or more calls to the device's async\_read\_some\_at function.
 
 
 [heading Parameters]
@@ -864,7 +864,7 @@
 
 * 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.
+This operation is implemented in terms of zero or more calls to the device's async\_read\_some\_at function.
 
 
 [heading Parameters]
@@ -880,15 +880,15 @@
 
 [[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.
+ std::size_t completion_condition(
+ // Result of latest async_read_some_at operation.
      const boost::system::error_code& error,
 
      // Number of bytes transferred so far.
      std::size_t bytes_transferred
    );
 ``
-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.]]
+A return value of 0 indicates that the read operation is complete. A non-zero return value indicates the maximum number of bytes to be read on the next call to the device's async\_read\_some\_at function.]]
 
 [[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:
 ``
@@ -1413,7 +1413,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of one or more calls to the stream's async\_write\_some function.
+This operation is implemented in terms of zero or more calls to the stream's async\_write\_some function.
 
 
 [heading Parameters]
@@ -1480,7 +1480,7 @@
 
 * The completion_condition function object returns true.
 
-This operation is implemented in terms of one or more calls to the stream's async\_write\_some function.
+This operation is implemented in terms of zero or more calls to the stream's async\_write\_some function.
 
 
 [heading Parameters]
@@ -1494,15 +1494,15 @@
 
 [[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(
- const boost::system::error_code& error, // Result of latest write_some
- // operation.
+ std::size_t completion_condition(
+ // Result of latest async_write_some operation.
+ const boost::system::error_code& error,
 
- std::size_t bytes_transferred // Number of bytes transferred
- // so far.
+ // 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 stream's async\_write\_some function are required.]]
+A return value of 0 indicates that the write operation is complete. A non-zero return value indicates the maximum number of bytes to be written on the next call to the stream's async\_write\_some function.]]
 
 [[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:
 ``
@@ -1560,7 +1560,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of one or more calls to the stream's async\_write\_some function.
+This operation is implemented in terms of zero or more calls to the stream's async\_write\_some function.
 
 
 [heading Parameters]
@@ -1616,7 +1616,7 @@
 
 * The completion_condition function object returns true.
 
-This operation is implemented in terms of one or more calls to the stream's async\_write\_some function.
+This operation is implemented in terms of zero or more calls to the stream's async\_write\_some function.
 
 
 [heading Parameters]
@@ -1630,15 +1630,15 @@
 
 [[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(
- const boost::system::error_code& error, // Result of latest write_some
- // operation.
+ std::size_t completion_condition(
+ // Result of latest async_write_some operation.
+ const boost::system::error_code& error,
 
- std::size_t bytes_transferred // Number of bytes transferred
- // so far.
+ // 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 stream's async\_write\_some function are required.]]
+A return value of 0 indicates that the write operation is complete. A non-zero return value indicates the maximum number of bytes to be written on the next call to the stream's async\_write\_some function.]]
 
 [[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:
 ``
@@ -1733,7 +1733,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of one or more calls to the device's async\_write\_some\_at function.
+This operation is implemented in terms of zero or more calls to the device's async\_write\_some\_at function.
 
 
 [heading Parameters]
@@ -1803,7 +1803,7 @@
 
 * 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.
+This operation is implemented in terms of zero or more calls to the device's async\_write\_some\_at function.
 
 
 [heading Parameters]
@@ -1819,15 +1819,15 @@
 
 [[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.
+ std::size_t completion_condition(
+ // Result of latest async_write_some_at operation.
      const boost::system::error_code& error,
 
      // Number of bytes transferred so far.
      std::size_t bytes_transferred
    );
 ``
-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.]]
+A return value of 0 indicates that the write operation is complete. A non-zero return value indicates the maximum number of bytes to be written on the next call to the device's async\_write\_some\_at function.]]
 
 [[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:
 ``
@@ -1886,7 +1886,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of one or more calls to the device's async\_write\_some\_at function.
+This operation is implemented in terms of zero or more calls to the device's async\_write\_some\_at function.
 
 
 [heading Parameters]
@@ -1945,7 +1945,7 @@
 
 * 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.
+This operation is implemented in terms of zero or more calls to the device's async\_write\_some\_at function.
 
 
 [heading Parameters]
@@ -1961,7 +1961,7 @@
 
 [[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(
+ std::size_t completion_condition(
      // Result of latest async_write_some_at operation.
      const boost::system::error_code& error,
 
@@ -1969,7 +1969,7 @@
      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.]]
+A return value of 0 indicates that the write operation is complete. A non-zero return value indicates the maximum number of bytes to be written on the next call to the device's async\_write\_some\_at function.]]
 
 [[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:
 ``
@@ -4425,13 +4425,21 @@
 
 [endsect]
 
-
 [section:lowest_layer basic_datagram_socket::lowest_layer]
 
+[indexterm2 lowest_layer..basic_datagram_socket] Get a reference to the lowest layer.
+
+ lowest_layer_type & ``[link boost_asio.reference.basic_datagram_socket.lowest_layer.overload1 lowest_layer]``();
+
+ const lowest_layer_type & ``[link boost_asio.reference.basic_datagram_socket.lowest_layer.overload2 lowest_layer]``() const;
+
+
+[section:overload1 basic_datagram_socket::lowest_layer (1 of 2 overloads)]
+
 
 ['Inherited from basic_socket.]
 
-[indexterm2 lowest_layer..basic_datagram_socket] Get a reference to the lowest layer.
+Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -4449,6 +4457,31 @@
 
 
 
+[section:overload2 basic_datagram_socket::lowest_layer (2 of 2 overloads)]
+
+
+['Inherited from basic_socket.]
+
+Get a const reference to the lowest layer.
+
+ const lowest_layer_type & lowest_layer() const;
+
+
+This function returns a const reference to the lowest layer in a stack of layers. Since a basic_socket cannot contain any further layers, it simply returns a reference to itself.
+
+
+[heading Return Value]
+
+A const reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:lowest_layer_type basic_datagram_socket::lowest_layer_type]
 
 
@@ -9816,13 +9849,21 @@
 
 [endsect]
 
-
 [section:lowest_layer basic_raw_socket::lowest_layer]
 
+[indexterm2 lowest_layer..basic_raw_socket] Get a reference to the lowest layer.
+
+ lowest_layer_type & ``[link boost_asio.reference.basic_raw_socket.lowest_layer.overload1 lowest_layer]``();
+
+ const lowest_layer_type & ``[link boost_asio.reference.basic_raw_socket.lowest_layer.overload2 lowest_layer]``() const;
+
+
+[section:overload1 basic_raw_socket::lowest_layer (1 of 2 overloads)]
+
 
 ['Inherited from basic_socket.]
 
-[indexterm2 lowest_layer..basic_raw_socket] Get a reference to the lowest layer.
+Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -9840,6 +9881,31 @@
 
 
 
+[section:overload2 basic_raw_socket::lowest_layer (2 of 2 overloads)]
+
+
+['Inherited from basic_socket.]
+
+Get a const reference to the lowest layer.
+
+ const lowest_layer_type & lowest_layer() const;
+
+
+This function returns a const reference to the lowest layer in a stack of layers. Since a basic_socket cannot contain any further layers, it simply returns a reference to itself.
+
+
+[heading Return Value]
+
+A const reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:lowest_layer_type basic_raw_socket::lowest_layer_type]
 
 
@@ -12487,11 +12553,19 @@
 [endsect]
 
 
-
 [section:lowest_layer basic_serial_port::lowest_layer]
 
 [indexterm2 lowest_layer..basic_serial_port] Get a reference to the lowest layer.
 
+ lowest_layer_type & ``[link boost_asio.reference.basic_serial_port.lowest_layer.overload1 lowest_layer]``();
+
+ const lowest_layer_type & ``[link boost_asio.reference.basic_serial_port.lowest_layer.overload2 lowest_layer]``() const;
+
+
+[section:overload1 basic_serial_port::lowest_layer (1 of 2 overloads)]
+
+Get a reference to the lowest layer.
+
   lowest_layer_type & lowest_layer();
 
 
@@ -12508,6 +12582,28 @@
 
 
 
+[section:overload2 basic_serial_port::lowest_layer (2 of 2 overloads)]
+
+Get a const reference to the lowest layer.
+
+ const lowest_layer_type & lowest_layer() const;
+
+
+This function returns a const reference to the lowest layer in a stack of layers. Since a basic_serial_port cannot contain any further layers, it simply returns a reference to itself.
+
+
+[heading Return Value]
+
+A const reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:lowest_layer_type basic_serial_port::lowest_layer_type]
 
 [indexterm2 lowest_layer_type..basic_serial_port] A basic_serial_port is always the lowest layer.
@@ -15052,11 +15148,19 @@
 
 [endsect]
 
-
 [section:lowest_layer basic_socket::lowest_layer]
 
 [indexterm2 lowest_layer..basic_socket] Get a reference to the lowest layer.
 
+ lowest_layer_type & ``[link boost_asio.reference.basic_socket.lowest_layer.overload1 lowest_layer]``();
+
+ const lowest_layer_type & ``[link boost_asio.reference.basic_socket.lowest_layer.overload2 lowest_layer]``() const;
+
+
+[section:overload1 basic_socket::lowest_layer (1 of 2 overloads)]
+
+Get a reference to the lowest layer.
+
   lowest_layer_type & lowest_layer();
 
 
@@ -15073,6 +15177,28 @@
 
 
 
+[section:overload2 basic_socket::lowest_layer (2 of 2 overloads)]
+
+Get a const reference to the lowest layer.
+
+ const lowest_layer_type & lowest_layer() const;
+
+
+This function returns a const reference to the lowest layer in a stack of layers. Since a basic_socket cannot contain any further layers, it simply returns a reference to itself.
+
+
+[heading Return Value]
+
+A const reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:lowest_layer_type basic_socket::lowest_layer_type]
 
 [indexterm2 lowest_layer_type..basic_socket] A basic_socket is always the lowest layer.
@@ -20657,13 +20783,21 @@
 
 [endsect]
 
-
 [section:lowest_layer basic_socket_streambuf::lowest_layer]
 
+[indexterm2 lowest_layer..basic_socket_streambuf] Get a reference to the lowest layer.
+
+ lowest_layer_type & ``[link boost_asio.reference.basic_socket_streambuf.lowest_layer.overload1 lowest_layer]``();
+
+ const lowest_layer_type & ``[link boost_asio.reference.basic_socket_streambuf.lowest_layer.overload2 lowest_layer]``() const;
+
+
+[section:overload1 basic_socket_streambuf::lowest_layer (1 of 2 overloads)]
+
 
 ['Inherited from basic_socket.]
 
-[indexterm2 lowest_layer..basic_socket_streambuf] Get a reference to the lowest layer.
+Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -20681,6 +20815,31 @@
 
 
 
+[section:overload2 basic_socket_streambuf::lowest_layer (2 of 2 overloads)]
+
+
+['Inherited from basic_socket.]
+
+Get a const reference to the lowest layer.
+
+ const lowest_layer_type & lowest_layer() const;
+
+
+This function returns a const reference to the lowest layer in a stack of layers. Since a basic_socket cannot contain any further layers, it simply returns a reference to itself.
+
+
+[heading Return Value]
+
+A const reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:lowest_layer_type basic_socket_streambuf::lowest_layer_type]
 
 
@@ -24282,13 +24441,21 @@
 
 [endsect]
 
-
 [section:lowest_layer basic_stream_socket::lowest_layer]
 
+[indexterm2 lowest_layer..basic_stream_socket] Get a reference to the lowest layer.
+
+ lowest_layer_type & ``[link boost_asio.reference.basic_stream_socket.lowest_layer.overload1 lowest_layer]``();
+
+ const lowest_layer_type & ``[link boost_asio.reference.basic_stream_socket.lowest_layer.overload2 lowest_layer]``() const;
+
+
+[section:overload1 basic_stream_socket::lowest_layer (1 of 2 overloads)]
+
 
 ['Inherited from basic_socket.]
 
-[indexterm2 lowest_layer..basic_stream_socket] Get a reference to the lowest layer.
+Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -24306,6 +24473,31 @@
 
 
 
+[section:overload2 basic_stream_socket::lowest_layer (2 of 2 overloads)]
+
+
+['Inherited from basic_socket.]
+
+Get a const reference to the lowest layer.
+
+ const lowest_layer_type & lowest_layer() const;
+
+
+This function returns a const reference to the lowest layer in a stack of layers. Since a basic_socket cannot contain any further layers, it simply returns a reference to itself.
+
+
+[heading Return Value]
+
+A const reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:lowest_layer_type basic_stream_socket::lowest_layer_type]
 
 
@@ -27617,11 +27809,19 @@
 [endsect]
 
 
-
 [section:lowest_layer buffered_read_stream::lowest_layer]
 
 [indexterm2 lowest_layer..buffered_read_stream] Get a reference to the lowest layer.
 
+ lowest_layer_type & ``[link boost_asio.reference.buffered_read_stream.lowest_layer.overload1 lowest_layer]``();
+
+ const lowest_layer_type & ``[link boost_asio.reference.buffered_read_stream.lowest_layer.overload2 lowest_layer]``() const;
+
+
+[section:overload1 buffered_read_stream::lowest_layer (1 of 2 overloads)]
+
+Get a reference to the lowest layer.
+
   lowest_layer_type & lowest_layer();
 
 
@@ -27630,6 +27830,20 @@
 
 
 
+[section:overload2 buffered_read_stream::lowest_layer (2 of 2 overloads)]
+
+Get a const reference to the lowest layer.
+
+ const lowest_layer_type & lowest_layer() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:lowest_layer_type buffered_read_stream::lowest_layer_type]
 
 [indexterm2 lowest_layer_type..buffered_read_stream] The type of the lowest layer.
@@ -28222,11 +28436,19 @@
 [endsect]
 
 
-
 [section:lowest_layer buffered_stream::lowest_layer]
 
 [indexterm2 lowest_layer..buffered_stream] Get a reference to the lowest layer.
 
+ lowest_layer_type & ``[link boost_asio.reference.buffered_stream.lowest_layer.overload1 lowest_layer]``();
+
+ const lowest_layer_type & ``[link boost_asio.reference.buffered_stream.lowest_layer.overload2 lowest_layer]``() const;
+
+
+[section:overload1 buffered_stream::lowest_layer (1 of 2 overloads)]
+
+Get a reference to the lowest layer.
+
   lowest_layer_type & lowest_layer();
 
 
@@ -28235,6 +28457,20 @@
 
 
 
+[section:overload2 buffered_stream::lowest_layer (2 of 2 overloads)]
+
+Get a const reference to the lowest layer.
+
+ const lowest_layer_type & lowest_layer() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:lowest_layer_type buffered_stream::lowest_layer_type]
 
 [indexterm2 lowest_layer_type..buffered_stream] The type of the lowest layer.
@@ -28787,11 +29023,19 @@
 [endsect]
 
 
-
 [section:lowest_layer buffered_write_stream::lowest_layer]
 
 [indexterm2 lowest_layer..buffered_write_stream] Get a reference to the lowest layer.
 
+ lowest_layer_type & ``[link boost_asio.reference.buffered_write_stream.lowest_layer.overload1 lowest_layer]``();
+
+ const lowest_layer_type & ``[link boost_asio.reference.buffered_write_stream.lowest_layer.overload2 lowest_layer]``() const;
+
+
+[section:overload1 buffered_write_stream::lowest_layer (1 of 2 overloads)]
+
+Get a reference to the lowest layer.
+
   lowest_layer_type & lowest_layer();
 
 
@@ -28800,6 +29044,20 @@
 
 
 
+[section:overload2 buffered_write_stream::lowest_layer (2 of 2 overloads)]
+
+Get a const reference to the lowest layer.
+
+ const lowest_layer_type & lowest_layer() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:lowest_layer_type buffered_write_stream::lowest_layer_type]
 
 [indexterm2 lowest_layer_type..buffered_write_stream] The type of the lowest layer.
@@ -43931,11 +44189,19 @@
 [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 & ``[link boost_asio.reference.posix__basic_descriptor.lowest_layer.overload1 lowest_layer]``();
+
+ const lowest_layer_type & ``[link boost_asio.reference.posix__basic_descriptor.lowest_layer.overload2 lowest_layer]``() const;
+
+
+[section:overload1 posix::basic_descriptor::lowest_layer (1 of 2 overloads)]
+
+Get a reference to the lowest layer.
+
   lowest_layer_type & lowest_layer();
 
 
@@ -43952,6 +44218,28 @@
 
 
 
+[section:overload2 posix::basic_descriptor::lowest_layer (2 of 2 overloads)]
+
+Get a const reference to the lowest layer.
+
+ const lowest_layer_type & lowest_layer() const;
+
+
+This function returns a const reference to the lowest layer in a stack of layers. Since a basic_descriptor cannot contain any further layers, it simply returns a reference to itself.
+
+
+[heading Return Value]
+
+A const reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:lowest_layer_type posix::basic_descriptor::lowest_layer_type]
 
 [indexterm2 lowest_layer_type..posix::basic_descriptor] A basic_descriptor is always the lowest layer.
@@ -44978,13 +45266,21 @@
 [endsect]
 
 
-
 [section:lowest_layer posix::basic_stream_descriptor::lowest_layer]
 
+[indexterm2 lowest_layer..posix::basic_stream_descriptor] Get a reference to the lowest layer.
+
+ lowest_layer_type & ``[link boost_asio.reference.posix__basic_stream_descriptor.lowest_layer.overload1 lowest_layer]``();
+
+ const lowest_layer_type & ``[link boost_asio.reference.posix__basic_stream_descriptor.lowest_layer.overload2 lowest_layer]``() const;
+
+
+[section:overload1 posix::basic_stream_descriptor::lowest_layer (1 of 2 overloads)]
+
 
 ['Inherited from posix::basic_descriptor.]
 
-[indexterm2 lowest_layer..posix::basic_stream_descriptor] Get a reference to the lowest layer.
+Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -45002,6 +45298,31 @@
 
 
 
+[section:overload2 posix::basic_stream_descriptor::lowest_layer (2 of 2 overloads)]
+
+
+['Inherited from posix::basic_descriptor.]
+
+Get a const reference to the lowest layer.
+
+ const lowest_layer_type & lowest_layer() const;
+
+
+This function returns a const reference to the lowest layer in a stack of layers. Since a basic_descriptor cannot contain any further layers, it simply returns a reference to itself.
+
+
+[heading Return Value]
+
+A const reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:lowest_layer_type posix::basic_stream_descriptor::lowest_layer_type]
 
 
@@ -47006,7 +47327,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of one or more calls to the stream's read\_some function.
+This operation is implemented in terms of zero or more calls to the stream's read\_some function.
 
 
 [heading Parameters]
@@ -47082,7 +47403,7 @@
 
 * 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.
+This operation is implemented in terms of zero or more calls to the stream's read\_some function.
 
 
 [heading Parameters]
@@ -47096,15 +47417,15 @@
 
 [[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 completion_condition(
+ // Result of latest read_some operation.
+ const boost::system::error_code& error,
 
- std::size_t bytes_transferred // Number of bytes transferred
- // so far.
+ // 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 stream's read\_some function are required.]]
+A return value of 0 indicates that the read operation is complete. A non-zero return value indicates the maximum number of bytes to be read on the next call to the stream's read\_some function.]]
 
 ]
 
@@ -47161,7 +47482,7 @@
 
 * 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.
+This operation is implemented in terms of zero or more calls to the stream's read\_some function.
 
 
 [heading Parameters]
@@ -47175,15 +47496,15 @@
 
 [[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 completion_condition(
+ // Result of latest read_some operation.
+ const boost::system::error_code& error,
 
- std::size_t bytes_transferred // Number of bytes transferred
- // so far.
+ // 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 stream's read\_some function are required.]]
+A return value of 0 indicates that the read operation is complete. A non-zero return value indicates the maximum number of bytes to be read on the next call to the stream's read\_some function.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -47216,7 +47537,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of one or more calls to the stream's read\_some function.
+This operation is implemented in terms of zero or more calls to the stream's read\_some function.
 
 
 [heading Parameters]
@@ -47279,7 +47600,7 @@
 
 * 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.
+This operation is implemented in terms of zero or more calls to the stream's read\_some function.
 
 
 [heading Parameters]
@@ -47293,15 +47614,15 @@
 
 [[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 completion_condition(
+ // Result of latest read_some operation.
+ const boost::system::error_code& error,
 
- std::size_t bytes_transferred // Number of bytes transferred
- // so far.
+ // 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 stream's read\_some function are required.]]
+A return value of 0 indicates that the read operation is complete. A non-zero return value indicates the maximum number of bytes to be read on the next call to the stream's read\_some function.]]
 
 ]
 
@@ -47344,7 +47665,7 @@
 
 * 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.
+This operation is implemented in terms of zero or more calls to the stream's read\_some function.
 
 
 [heading Parameters]
@@ -47358,15 +47679,15 @@
 
 [[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 completion_condition(
+ // Result of latest read_some operation.
+ const boost::system::error_code& error,
 
- std::size_t bytes_transferred // Number of bytes transferred
- // so far.
+ // 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 stream's read\_some function are required.]]
+A return value of 0 indicates that the read operation is complete. A non-zero return value indicates the maximum number of bytes to be read on the next call to the stream's read\_some function.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -47466,7 +47787,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of one or more calls to the device's read\_some\_at function.
+This operation is implemented in terms of zero or more calls to the device's read\_some\_at function.
 
 
 [heading Parameters]
@@ -47545,7 +47866,7 @@
 
 * 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.
+This operation is implemented in terms of zero or more calls to the device's read\_some\_at function.
 
 
 [heading Parameters]
@@ -47561,7 +47882,7 @@
 
 [[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(
+ std::size_t completion_condition(
      // Result of latest read_some_at operation.
      const boost::system::error_code& error,
 
@@ -47569,7 +47890,7 @@
      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.]]
+A return value of 0 indicates that the read operation is complete. A non-zero return value indicates the maximum number of bytes to be read on the next call to the device's read\_some\_at function.]]
 
 ]
 
@@ -47627,7 +47948,7 @@
 
 * 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.
+This operation is implemented in terms of zero or more calls to the device's read\_some\_at function.
 
 
 [heading Parameters]
@@ -47643,15 +47964,15 @@
 
 [[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 completion_condition(
+ // Result of latest read_some_at operation.
+ const boost::system::error_code& error,
 
- std::size_t bytes_transferred // Number of bytes transferred
- // so far.
+ // 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.]]
+A return value of 0 indicates that the read operation is complete. A non-zero return value indicates the maximum number of bytes to be read on the next call to the device's read\_some\_at function.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -47685,7 +48006,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of one or more calls to the device's read\_some\_at function.
+This operation is implemented in terms of zero or more calls to the device's read\_some\_at function.
 
 
 [heading Parameters]
@@ -47751,7 +48072,7 @@
 
 * 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.
+This operation is implemented in terms of zero or more calls to the device's read\_some\_at function.
 
 
 [heading Parameters]
@@ -47767,7 +48088,7 @@
 
 [[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(
+ std::size_t completion_condition(
      // Result of latest read_some_at operation.
      const boost::system::error_code& error,
 
@@ -47775,7 +48096,7 @@
      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.]]
+A return value of 0 indicates that the read operation is complete. A non-zero return value indicates the maximum number of bytes to be read on the next call to the device's read\_some\_at function.]]
 
 ]
 
@@ -47819,7 +48140,7 @@
 
 * 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.
+This operation is implemented in terms of zero or more calls to the device's read\_some\_at function.
 
 
 [heading Parameters]
@@ -47835,7 +48156,7 @@
 
 [[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(
+ std::size_t completion_condition(
      // Result of latest read_some_at operation.
      const boost::system::error_code& error,
 
@@ -47843,7 +48164,7 @@
      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.]]
+A return value of 0 indicates that the read operation is complete. A non-zero return value indicates the maximum number of bytes to be read on the next call to the device's read\_some\_at function.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -54041,11 +54362,19 @@
 [endsect]
 
 
-
 [section:lowest_layer ssl::stream::lowest_layer]
 
 [indexterm2 lowest_layer..ssl::stream] Get a reference to the lowest layer.
 
+ lowest_layer_type & ``[link boost_asio.reference.ssl__stream.lowest_layer.overload1 lowest_layer]``();
+
+ const lowest_layer_type & ``[link boost_asio.reference.ssl__stream.lowest_layer.overload2 lowest_layer]``() const;
+
+
+[section:overload1 ssl::stream::lowest_layer (1 of 2 overloads)]
+
+Get a reference to the lowest layer.
+
   lowest_layer_type & lowest_layer();
 
 
@@ -54062,6 +54391,28 @@
 
 
 
+[section:overload2 ssl::stream::lowest_layer (2 of 2 overloads)]
+
+Get a const reference to the lowest layer.
+
+ const lowest_layer_type & lowest_layer() const;
+
+
+This function returns a const reference to the lowest layer in a stack of stream layers.
+
+
+[heading Return Value]
+
+A const reference to the lowest layer in the stack of stream layers. Ownership is not transferred to the caller.
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:lowest_layer_type ssl::stream::lowest_layer_type]
 
 [indexterm2 lowest_layer_type..ssl::stream] The type of the lowest layer.
@@ -56594,11 +56945,19 @@
 [endsect]
 
 
-
 [section:lowest_layer windows::basic_handle::lowest_layer]
 
 [indexterm2 lowest_layer..windows::basic_handle] Get a reference to the lowest layer.
 
+ lowest_layer_type & ``[link boost_asio.reference.windows__basic_handle.lowest_layer.overload1 lowest_layer]``();
+
+ const lowest_layer_type & ``[link boost_asio.reference.windows__basic_handle.lowest_layer.overload2 lowest_layer]``() const;
+
+
+[section:overload1 windows::basic_handle::lowest_layer (1 of 2 overloads)]
+
+Get a reference to the lowest layer.
+
   lowest_layer_type & lowest_layer();
 
 
@@ -56615,6 +56974,28 @@
 
 
 
+[section:overload2 windows::basic_handle::lowest_layer (2 of 2 overloads)]
+
+Get a const reference to the lowest layer.
+
+ const lowest_layer_type & lowest_layer() const;
+
+
+This function returns a const reference to the lowest layer in a stack of layers. Since a basic_handle cannot contain any further layers, it simply returns a reference to itself.
+
+
+[heading Return Value]
+
+A const reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [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.
@@ -57430,13 +57811,21 @@
 [endsect]
 
 
-
 [section:lowest_layer windows::basic_random_access_handle::lowest_layer]
 
+[indexterm2 lowest_layer..windows::basic_random_access_handle] Get a reference to the lowest layer.
+
+ lowest_layer_type & ``[link boost_asio.reference.windows__basic_random_access_handle.lowest_layer.overload1 lowest_layer]``();
+
+ const lowest_layer_type & ``[link boost_asio.reference.windows__basic_random_access_handle.lowest_layer.overload2 lowest_layer]``() const;
+
+
+[section:overload1 windows::basic_random_access_handle::lowest_layer (1 of 2 overloads)]
+
 
 ['Inherited from windows::basic_handle.]
 
-[indexterm2 lowest_layer..windows::basic_random_access_handle] Get a reference to the lowest layer.
+Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -57454,6 +57843,31 @@
 
 
 
+[section:overload2 windows::basic_random_access_handle::lowest_layer (2 of 2 overloads)]
+
+
+['Inherited from windows::basic_handle.]
+
+Get a const reference to the lowest layer.
+
+ const lowest_layer_type & lowest_layer() const;
+
+
+This function returns a const reference to the lowest layer in a stack of layers. Since a basic_handle cannot contain any further layers, it simply returns a reference to itself.
+
+
+[heading Return Value]
+
+A const reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:lowest_layer_type windows::basic_random_access_handle::lowest_layer_type]
 
 
@@ -58501,13 +58915,21 @@
 [endsect]
 
 
-
 [section:lowest_layer windows::basic_stream_handle::lowest_layer]
 
+[indexterm2 lowest_layer..windows::basic_stream_handle] Get a reference to the lowest layer.
+
+ lowest_layer_type & ``[link boost_asio.reference.windows__basic_stream_handle.lowest_layer.overload1 lowest_layer]``();
+
+ const lowest_layer_type & ``[link boost_asio.reference.windows__basic_stream_handle.lowest_layer.overload2 lowest_layer]``() const;
+
+
+[section:overload1 windows::basic_stream_handle::lowest_layer (1 of 2 overloads)]
+
 
 ['Inherited from windows::basic_handle.]
 
-[indexterm2 lowest_layer..windows::basic_stream_handle] Get a reference to the lowest layer.
+Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -58525,6 +58947,31 @@
 
 
 
+[section:overload2 windows::basic_stream_handle::lowest_layer (2 of 2 overloads)]
+
+
+['Inherited from windows::basic_handle.]
+
+Get a const reference to the lowest layer.
+
+ const lowest_layer_type & lowest_layer() const;
+
+
+This function returns a const reference to the lowest layer in a stack of layers. Since a basic_handle cannot contain any further layers, it simply returns a reference to itself.
+
+
+[heading Return Value]
+
+A const reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:lowest_layer_type windows::basic_stream_handle::lowest_layer_type]
 
 
@@ -58954,6 +59401,219 @@
 
 [endsect]
 
+[section:windows__overlapped_ptr windows::overlapped_ptr]
+
+Wraps a handler to create an OVERLAPPED object for use with overlapped I/O.
+
+ class overlapped_ptr :
+ noncopyable
+
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.windows__overlapped_ptr.complete [*complete]]]
+ [Post completion notification for overlapped operation. Releases ownership. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__overlapped_ptr.get [*get]]]
+ [Get the contained OVERLAPPED object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__overlapped_ptr.overlapped_ptr [*overlapped_ptr]]]
+ [Construct an empty overlapped_ptr. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__overlapped_ptr.release [*release]]]
+ [Release ownership of the OVERLAPPED object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__overlapped_ptr.reset [*reset]]]
+ [Reset to empty. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__overlapped_ptr._overlapped_ptr [*~overlapped_ptr]]]
+ [Destructor automatically frees the OVERLAPPED object unless released. ]
+ ]
+
+]
+
+A special-purpose smart pointer used to wrap an application handler so that it can be passed as the LPOVERLAPPED argument to overlapped I/O functions.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+
+
+[section:complete windows::overlapped_ptr::complete]
+
+[indexterm2 complete..windows::overlapped_ptr] Post completion notification for overlapped operation. Releases ownership.
+
+ void complete(
+ const boost::system::error_code & ec,
+ std::size_t bytes_transferred);
+
+
+
+[endsect]
+
+
+[section:get windows::overlapped_ptr::get]
+
+[indexterm2 get..windows::overlapped_ptr] Get the contained OVERLAPPED object.
+
+ OVERLAPPED * ``[link boost_asio.reference.windows__overlapped_ptr.get.overload1 get]``();
+
+ const OVERLAPPED * ``[link boost_asio.reference.windows__overlapped_ptr.get.overload2 get]``() const;
+
+
+[section:overload1 windows::overlapped_ptr::get (1 of 2 overloads)]
+
+Get the contained OVERLAPPED object.
+
+ OVERLAPPED * get();
+
+
+
+[endsect]
+
+
+
+[section:overload2 windows::overlapped_ptr::get (2 of 2 overloads)]
+
+Get the contained OVERLAPPED object.
+
+ const OVERLAPPED * get() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
+[section:overlapped_ptr windows::overlapped_ptr::overlapped_ptr]
+
+[indexterm2 overlapped_ptr..windows::overlapped_ptr] Construct an empty overlapped_ptr.
+
+ ``[link boost_asio.reference.windows__overlapped_ptr.overlapped_ptr.overload1 overlapped_ptr]``();
+
+ template<
+ typename ``[link boost_asio.reference.Handler Handler]``>
+ ``[link boost_asio.reference.windows__overlapped_ptr.overlapped_ptr.overload2 overlapped_ptr]``(
+ boost::asio::io_service & io_service,
+ Handler handler);
+
+
+[section:overload1 windows::overlapped_ptr::overlapped_ptr (1 of 2 overloads)]
+
+Construct an empty overlapped_ptr.
+
+ overlapped_ptr();
+
+
+
+[endsect]
+
+
+
+[section:overload2 windows::overlapped_ptr::overlapped_ptr (2 of 2 overloads)]
+
+Construct an overlapped_ptr to contain the specified handler.
+
+ template<
+ typename ``[link boost_asio.reference.Handler Handler]``>
+ overlapped_ptr(
+ boost::asio::io_service & io_service,
+ Handler handler);
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:release windows::overlapped_ptr::release]
+
+[indexterm2 release..windows::overlapped_ptr] Release ownership of the OVERLAPPED object.
+
+ OVERLAPPED * release();
+
+
+
+[endsect]
+
+
+[section:reset windows::overlapped_ptr::reset]
+
+[indexterm2 reset..windows::overlapped_ptr] Reset to empty.
+
+ void ``[link boost_asio.reference.windows__overlapped_ptr.reset.overload1 reset]``();
+
+ template<
+ typename ``[link boost_asio.reference.Handler Handler]``>
+ void ``[link boost_asio.reference.windows__overlapped_ptr.reset.overload2 reset]``(
+ boost::asio::io_service & io_service,
+ Handler handler);
+
+
+[section:overload1 windows::overlapped_ptr::reset (1 of 2 overloads)]
+
+Reset to empty.
+
+ void reset();
+
+
+
+[endsect]
+
+
+
+[section:overload2 windows::overlapped_ptr::reset (2 of 2 overloads)]
+
+Reset to contain the specified handler, freeing any current OVERLAPPED object.
+
+ template<
+ typename ``[link boost_asio.reference.Handler Handler]``>
+ void reset(
+ boost::asio::io_service & io_service,
+ Handler handler);
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:_overlapped_ptr windows::overlapped_ptr::~overlapped_ptr]
+
+[indexterm2 ~overlapped_ptr..windows::overlapped_ptr] Destructor automatically frees the OVERLAPPED object unless released.
+
+ ~overlapped_ptr();
+
+
+
+[endsect]
+
+
+
+[endsect]
+
 
 [section:windows__random_access_handle windows::random_access_handle]
 
@@ -60084,7 +60744,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of one or more calls to the stream's write\_some function.
+This operation is implemented in terms of zero or more calls to the stream's write\_some function.
 
 
 [heading Parameters]
@@ -60160,7 +60820,7 @@
 
 * The completion_condition function object returns true.
 
-This operation is implemented in terms of one or more calls to the stream's write\_some function.
+This operation is implemented in terms of zero or more calls to the stream's write\_some function.
 
 
 [heading Parameters]
@@ -60174,15 +60834,15 @@
 
 [[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(
- const boost::system::error_code& error, // Result of latest write_some
- // operation.
+ std::size_t completion_condition(
+ // Result of latest write_some operation.
+ const boost::system::error_code& error,
 
- std::size_t bytes_transferred // Number of bytes transferred
- // so far.
+ // 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 stream's write\_some function are required.]]
+A return value of 0 indicates that the write operation is complete. A non-zero return value indicates the maximum number of bytes to be written on the next call to the stream's write\_some function.]]
 
 ]
 
@@ -60239,7 +60899,7 @@
 
 * The completion_condition function object returns true.
 
-This operation is implemented in terms of one or more calls to the stream's write\_some function.
+This operation is implemented in terms of zero or more calls to the stream's write\_some function.
 
 
 [heading Parameters]
@@ -60253,15 +60913,15 @@
 
 [[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(
- const boost::system::error_code& error, // Result of latest write_some
- // operation.
+ std::size_t completion_condition(
+ // Result of latest write_some operation.
+ const boost::system::error_code& error,
 
- std::size_t bytes_transferred // Number of bytes transferred
- // so far.
+ // 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 stream's write\_some function are required.]]
+A return value of 0 indicates that the write operation is complete. A non-zero return value indicates the maximum number of bytes to be written on the next call to the stream's write\_some function.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -60296,7 +60956,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of one or more calls to the stream's write\_some function.
+This operation is implemented in terms of zero or more calls to the stream's write\_some function.
 
 
 [heading Parameters]
@@ -60361,7 +61021,7 @@
 
 * The completion_condition function object returns true.
 
-This operation is implemented in terms of one or more calls to the stream's write\_some function.
+This operation is implemented in terms of zero or more calls to the stream's write\_some function.
 
 
 [heading Parameters]
@@ -60375,15 +61035,15 @@
 
 [[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(
- const boost::system::error_code& error, // Result of latest write_some
- // operation.
+ std::size_t completion_condition(
+ // Result of latest write_some operation.
+ const boost::system::error_code& error,
 
- std::size_t bytes_transferred // Number of bytes transferred
- // so far.
+ // 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 stream's write\_some function are required.]]
+A return value of 0 indicates that the write operation is complete. A non-zero return value indicates the maximum number of bytes to be written on the next call to the stream's write\_some function.]]
 
 ]
 
@@ -60428,7 +61088,7 @@
 
 * The completion_condition function object returns true.
 
-This operation is implemented in terms of one or more calls to the stream's write\_some function.
+This operation is implemented in terms of zero or more calls to the stream's write\_some function.
 
 
 [heading Parameters]
@@ -60442,15 +61102,15 @@
 
 [[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(
- const boost::system::error_code& error, // Result of latest write_some
- // operation.
+ std::size_t completion_condition(
+ // Result of latest write_some operation.
+ const boost::system::error_code& error,
 
- std::size_t bytes_transferred // Number of bytes transferred
- // so far.
+ // 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 stream's write\_some function are required.]]
+A return value of 0 indicates that the write operation is complete. A non-zero return value indicates the maximum number of bytes to be written on the next call to the stream's write\_some function.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -60550,7 +61210,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of one or more calls to the device's write\_some\_at function.
+This operation is implemented in terms of zero or more calls to the device's write\_some\_at function.
 
 
 [heading Parameters]
@@ -60629,7 +61289,7 @@
 
 * 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.
+This operation is implemented in terms of zero or more calls to the device's write\_some\_at function.
 
 
 [heading Parameters]
@@ -60645,7 +61305,7 @@
 
 [[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(
+ std::size_t completion_condition(
      // Result of latest write_some_at operation.
      const boost::system::error_code& error,
 
@@ -60653,7 +61313,7 @@
      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.]]
+A return value of 0 indicates that the write operation is complete. A non-zero return value indicates the maximum number of bytes to be written on the next call to the device's write\_some\_at function.]]
 
 ]
 
@@ -60711,7 +61371,7 @@
 
 * 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.
+This operation is implemented in terms of zero or more calls to the device's write\_some\_at function.
 
 
 [heading Parameters]
@@ -60727,7 +61387,7 @@
 
 [[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(
+ std::size_t completion_condition(
      // Result of latest write_some_at operation.
      const boost::system::error_code& error,
 
@@ -60735,7 +61395,7 @@
      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.]]
+A return value of 0 indicates that the write operation is complete. A non-zero return value indicates the maximum number of bytes to be written on the next call to the device's write\_some\_at function.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -60771,7 +61431,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of one or more calls to the device's write\_some\_at function.
+This operation is implemented in terms of zero or more calls to the device's write\_some\_at function.
 
 
 [heading Parameters]
@@ -60839,7 +61499,7 @@
 
 * 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.
+This operation is implemented in terms of zero or more calls to the device's write\_some\_at function.
 
 
 [heading Parameters]
@@ -60855,7 +61515,7 @@
 
 [[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(
+ std::size_t completion_condition(
      // Result of latest write_some_at operation.
      const boost::system::error_code& error,
 
@@ -60863,7 +61523,7 @@
      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.]]
+A return value of 0 indicates that the write operation is complete. A non-zero return value indicates the maximum number of bytes to be written on the next call to the device's write\_some\_at function.]]
 
 ]
 
@@ -60909,7 +61569,7 @@
 
 * 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.
+This operation is implemented in terms of zero or more calls to the device's write\_some\_at function.
 
 
 [heading Parameters]
@@ -60925,7 +61585,7 @@
 
 [[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(
+ std::size_t completion_condition(
      // Result of latest write_some_at operation.
      const boost::system::error_code& error,
 
@@ -60933,7 +61593,7 @@
      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.]]
+A return value of 0 indicates that the write operation is complete. A non-zero return value indicates the maximum number of bytes to be written on the next call to the device's write\_some\_at function.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -175,6 +175,13 @@
     ]
   ]
   [
+ [`BOOST_ASIO_DISABLE_EVENTFD`]
+ [
+ Explicitly disables `eventfd` support on Linux, forcing the use of a
+ pipe to interrupt blocked epoll/select system calls.
+ ]
+ ]
+ [
     [`BOOST_ASIO_DISABLE_KQUEUE`]
     [
       Explicitly disables `kqueue` support on Mac OS X and BSD variants,

Modified: branches/proto/v4/libs/asio/example/nonblocking/third_party_lib.cpp
==============================================================================
--- branches/proto/v4/libs/asio/example/nonblocking/third_party_lib.cpp (original)
+++ branches/proto/v4/libs/asio/example/nonblocking/third_party_lib.cpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -150,7 +150,7 @@
 
     // Otherwise, an error occurred. Closing the socket cancels any outstanding
     // asynchronous read or write operations. The connection object will be
- // destroyed once automatically once those outstanding operations complete.
+ // destroyed automatically once those outstanding operations complete.
     else
       socket_.close();
   }
@@ -170,7 +170,7 @@
 
     // Otherwise, an error occurred. Closing the socket cancels any outstanding
     // asynchronous read or write operations. The connection object will be
- // destroyed once automatically once those outstanding operations complete.
+ // destroyed automatically once those outstanding operations complete.
     else
       socket_.close();
   }

Modified: branches/proto/v4/libs/asio/test/Jamfile
==============================================================================
--- branches/proto/v4/libs/asio/test/Jamfile (original)
+++ branches/proto/v4/libs/asio/test/Jamfile 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -81,6 +81,7 @@
   [ run posix/stream_descriptor.cpp <template>asio_unit_test ]
   [ run posix/stream_descriptor_service.cpp <template>asio_unit_test ]
   [ run read.cpp <template>asio_unit_test ]
+ [ run read_at.cpp <template>asio_unit_test ]
   [ run read_until.cpp <template>asio_unit_test ]
   [ run socket_acceptor_service.cpp <template>asio_unit_test ]
   [ run socket_base.cpp <template>asio_unit_test ]
@@ -90,9 +91,11 @@
   [ 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/overlapped_ptr.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 ]
+ [ run write_at.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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -142,6 +142,8 @@
   [ link posix/stream_descriptor_service.cpp : $(USE_SELECT) : posix_stream_descriptor_service_select ]
   [ run read.cpp ]
   [ run read.cpp : : : $(USE_SELECT) : read_select ]
+ [ run read_at.cpp ]
+ [ run read_at.cpp : : : $(USE_SELECT) : read_at_select ]
   [ run read_until.cpp ]
   [ run read_until.cpp : : : $(USE_SELECT) : read_until_select ]
   [ link socket_acceptor_service.cpp ]
@@ -160,6 +162,8 @@
   [ 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/overlapped_ptr.cpp : : windows_overlapped_ptr ]
+ [ link windows/overlapped_ptr.cpp : $(USE_SELECT) : windows_overlapped_ptr_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 ]
@@ -170,4 +174,6 @@
   [ link windows/stream_handle_service.cpp : $(USE_SELECT) : windows_stream_handle_service_select ]
   [ run write.cpp ]
   [ run write.cpp : : : $(USE_SELECT) : write_select ]
+ [ run write_at.cpp ]
+ [ run write_at.cpp : : : $(USE_SELECT) : write_at_select ]
   ;

Modified: branches/proto/v4/libs/asio/test/ip/tcp.cpp
==============================================================================
--- branches/proto/v4/libs/asio/test/ip/tcp.cpp (original)
+++ branches/proto/v4/libs/asio/test/ip/tcp.cpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -172,6 +172,11 @@
     ip::tcp::socket::lowest_layer_type& lowest_layer = socket1.lowest_layer();
     (void)lowest_layer;
 
+ const ip::tcp::socket& socket7 = socket1;
+ const ip::tcp::socket::lowest_layer_type& lowest_layer2
+ = socket7.lowest_layer();
+ (void)lowest_layer2;
+
     socket1.open(ip::tcp::v4());
     socket1.open(ip::tcp::v6());
     socket1.open(ip::tcp::v4(), ec);

Modified: branches/proto/v4/libs/asio/test/ip/udp.cpp
==============================================================================
--- branches/proto/v4/libs/asio/test/ip/udp.cpp (original)
+++ branches/proto/v4/libs/asio/test/ip/udp.cpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -77,6 +77,11 @@
     ip::udp::socket::lowest_layer_type& lowest_layer = socket1.lowest_layer();
     (void)lowest_layer;
 
+ const ip::udp::socket& socket7 = socket1;
+ const ip::udp::socket::lowest_layer_type& lowest_layer2
+ = socket7.lowest_layer();
+ (void)lowest_layer2;
+
     socket1.open(ip::udp::v4());
     socket1.open(ip::udp::v6());
     socket1.open(ip::udp::v4(), ec);

Modified: branches/proto/v4/libs/asio/test/posix/stream_descriptor.cpp
==============================================================================
--- branches/proto/v4/libs/asio/test/posix/stream_descriptor.cpp (original)
+++ branches/proto/v4/libs/asio/test/posix/stream_descriptor.cpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -68,6 +68,11 @@
       = descriptor1.lowest_layer();
     (void)lowest_layer;
 
+ const posix::stream_descriptor& descriptor3 = descriptor1;
+ const posix::stream_descriptor::lowest_layer_type& lowest_layer2
+ = descriptor3.lowest_layer();
+ (void)lowest_layer2;
+
     int native_descriptor2 = -1;
     descriptor1.assign(native_descriptor2);
 

Modified: branches/proto/v4/libs/asio/test/read.cpp
==============================================================================
--- branches/proto/v4/libs/asio/test/read.cpp (original)
+++ branches/proto/v4/libs/asio/test/read.cpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -38,7 +38,7 @@
   {
   }
 
- io_service_type& io_service()
+ io_service_type& get_io_service()
   {
     return io_service_;
   }
@@ -162,6 +162,18 @@
   BOOST_CHECK(s.check(buffers, sizeof(read_data)));
 }
 
+bool old_style_transfer_all(const boost::system::error_code& ec,
+ size_t bytes_transferred)
+{
+ return !!ec;
+}
+
+size_t short_transfer(const boost::system::error_code& ec,
+ size_t bytes_transferred)
+{
+ return !!ec ? 0 : 3;
+}
+
 void test_3_arg_read()
 {
   boost::asio::io_service ios;
@@ -261,6 +273,46 @@
       boost::asio::transfer_at_least(42));
   BOOST_CHECK(bytes_transferred == 50);
   BOOST_CHECK(s.check(buffers, 50));
+
+ s.reset(read_data, sizeof(read_data));
+ memset(read_buf, 0, sizeof(read_buf));
+ bytes_transferred = boost::asio::read(s, buffers, old_style_transfer_all);
+ BOOST_CHECK(bytes_transferred == sizeof(read_data));
+ BOOST_CHECK(s.check(buffers, sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ memset(read_buf, 0, sizeof(read_buf));
+ bytes_transferred = boost::asio::read(s, buffers, old_style_transfer_all);
+ BOOST_CHECK(bytes_transferred == sizeof(read_data));
+ BOOST_CHECK(s.check(buffers, sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ memset(read_buf, 0, sizeof(read_buf));
+ bytes_transferred = boost::asio::read(s, buffers, old_style_transfer_all);
+ BOOST_CHECK(bytes_transferred == sizeof(read_data));
+ BOOST_CHECK(s.check(buffers, sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ memset(read_buf, 0, sizeof(read_buf));
+ bytes_transferred = boost::asio::read(s, buffers, short_transfer);
+ BOOST_CHECK(bytes_transferred == sizeof(read_data));
+ BOOST_CHECK(s.check(buffers, sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ memset(read_buf, 0, sizeof(read_buf));
+ bytes_transferred = boost::asio::read(s, buffers, short_transfer);
+ BOOST_CHECK(bytes_transferred == sizeof(read_data));
+ BOOST_CHECK(s.check(buffers, sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ memset(read_buf, 0, sizeof(read_buf));
+ bytes_transferred = boost::asio::read(s, buffers, short_transfer);
+ BOOST_CHECK(bytes_transferred == sizeof(read_data));
+ BOOST_CHECK(s.check(buffers, sizeof(read_data)));
 }
 
 void test_4_arg_read()
@@ -386,6 +438,59 @@
   BOOST_CHECK(bytes_transferred == 50);
   BOOST_CHECK(s.check(buffers, 50));
   BOOST_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ memset(read_buf, 0, sizeof(read_buf));
+ bytes_transferred = boost::asio::read(s, buffers,
+ old_style_transfer_all, error);
+ BOOST_CHECK(bytes_transferred == sizeof(read_data));
+ BOOST_CHECK(s.check(buffers, sizeof(read_data)));
+ BOOST_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ memset(read_buf, 0, sizeof(read_buf));
+ error = boost::system::error_code();
+ bytes_transferred = boost::asio::read(s, buffers,
+ old_style_transfer_all, error);
+ BOOST_CHECK(bytes_transferred == sizeof(read_data));
+ BOOST_CHECK(s.check(buffers, sizeof(read_data)));
+ BOOST_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ memset(read_buf, 0, sizeof(read_buf));
+ error = boost::system::error_code();
+ bytes_transferred = boost::asio::read(s, buffers,
+ old_style_transfer_all, error);
+ BOOST_CHECK(bytes_transferred == sizeof(read_data));
+ BOOST_CHECK(s.check(buffers, sizeof(read_data)));
+ BOOST_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ memset(read_buf, 0, sizeof(read_buf));
+ bytes_transferred = boost::asio::read(s, buffers, short_transfer, error);
+ BOOST_CHECK(bytes_transferred == sizeof(read_data));
+ BOOST_CHECK(s.check(buffers, sizeof(read_data)));
+ BOOST_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ memset(read_buf, 0, sizeof(read_buf));
+ error = boost::system::error_code();
+ bytes_transferred = boost::asio::read(s, buffers, short_transfer, error);
+ BOOST_CHECK(bytes_transferred == sizeof(read_data));
+ BOOST_CHECK(s.check(buffers, sizeof(read_data)));
+ BOOST_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ memset(read_buf, 0, sizeof(read_buf));
+ error = boost::system::error_code();
+ bytes_transferred = boost::asio::read(s, buffers, short_transfer, error);
+ BOOST_CHECK(bytes_transferred == sizeof(read_data));
+ BOOST_CHECK(s.check(buffers, sizeof(read_data)));
+ BOOST_CHECK(!error);
 }
 
 void async_read_handler(const boost::system::error_code& e,
@@ -617,6 +722,88 @@
   ios.run();
   BOOST_CHECK(called);
   BOOST_CHECK(s.check(buffers, 50));
+
+ s.reset(read_data, sizeof(read_data));
+ memset(read_buf, 0, sizeof(read_buf));
+ called = false;
+ boost::asio::async_read(s, buffers, old_style_transfer_all,
+ boost::bind(async_read_handler,
+ boost::asio::placeholders::error,
+ boost::asio::placeholders::bytes_transferred,
+ sizeof(read_data), &called));
+ ios.reset();
+ ios.run();
+ BOOST_CHECK(called);
+ BOOST_CHECK(s.check(buffers, sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ memset(read_buf, 0, sizeof(read_buf));
+ called = false;
+ boost::asio::async_read(s, buffers, old_style_transfer_all,
+ boost::bind(async_read_handler,
+ boost::asio::placeholders::error,
+ boost::asio::placeholders::bytes_transferred,
+ sizeof(read_data), &called));
+ ios.reset();
+ ios.run();
+ BOOST_CHECK(called);
+ BOOST_CHECK(s.check(buffers, sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ memset(read_buf, 0, sizeof(read_buf));
+ called = false;
+ boost::asio::async_read(s, buffers, old_style_transfer_all,
+ boost::bind(async_read_handler,
+ boost::asio::placeholders::error,
+ boost::asio::placeholders::bytes_transferred,
+ sizeof(read_data), &called));
+ ios.reset();
+ ios.run();
+ BOOST_CHECK(called);
+ BOOST_CHECK(s.check(buffers, sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ memset(read_buf, 0, sizeof(read_buf));
+ called = false;
+ boost::asio::async_read(s, buffers, short_transfer,
+ boost::bind(async_read_handler,
+ boost::asio::placeholders::error,
+ boost::asio::placeholders::bytes_transferred,
+ sizeof(read_data), &called));
+ ios.reset();
+ ios.run();
+ BOOST_CHECK(called);
+ BOOST_CHECK(s.check(buffers, sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ memset(read_buf, 0, sizeof(read_buf));
+ called = false;
+ boost::asio::async_read(s, buffers, short_transfer,
+ boost::bind(async_read_handler,
+ boost::asio::placeholders::error,
+ boost::asio::placeholders::bytes_transferred,
+ sizeof(read_data), &called));
+ ios.reset();
+ ios.run();
+ BOOST_CHECK(called);
+ BOOST_CHECK(s.check(buffers, sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ memset(read_buf, 0, sizeof(read_buf));
+ called = false;
+ boost::asio::async_read(s, buffers, short_transfer,
+ boost::bind(async_read_handler,
+ boost::asio::placeholders::error,
+ boost::asio::placeholders::bytes_transferred,
+ sizeof(read_data), &called));
+ ios.reset();
+ ios.run();
+ BOOST_CHECK(called);
+ BOOST_CHECK(s.check(buffers, sizeof(read_data)));
 }
 
 test_suite* init_unit_test_suite(int, char*[])

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -36,7 +36,7 @@
   {
   }
 
- io_service_type& io_service()
+ io_service_type& get_io_service()
   {
     return io_service_;
   }

Modified: branches/proto/v4/libs/asio/test/serial_port.cpp
==============================================================================
--- branches/proto/v4/libs/asio/test/serial_port.cpp (original)
+++ branches/proto/v4/libs/asio/test/serial_port.cpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -39,6 +39,7 @@
 
 void test()
 {
+#if defined(BOOST_ASIO_HAS_SERIAL_PORT)
   using namespace boost::asio;
 
   try
@@ -66,6 +67,10 @@
     serial_port::lowest_layer_type& lowest_layer = port1.lowest_layer();
     (void)lowest_layer;
 
+ const serial_port& port4 = port1;
+ const serial_port::lowest_layer_type& lowest_layer2 = port4.lowest_layer();
+ (void)lowest_layer2;
+
     port1.open("null");
     port1.open("null", ec);
 
@@ -111,6 +116,7 @@
   catch (std::exception&)
   {
   }
+#endif // defined(BOOST_ASIO_HAS_SERIAL_PORT)
 }
 
 } // namespace serial_port_compile

Modified: branches/proto/v4/libs/asio/test/serial_port_base.cpp
==============================================================================
--- branches/proto/v4/libs/asio/test/serial_port_base.cpp (original)
+++ branches/proto/v4/libs/asio/test/serial_port_base.cpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -31,6 +31,7 @@
 
 void test()
 {
+#if defined(BOOST_ASIO_HAS_SERIAL_PORT)
   using namespace boost::asio;
 
   try
@@ -82,6 +83,7 @@
   catch (std::exception&)
   {
   }
+#endif // defined(BOOST_ASIO_HAS_SERIAL_PORT)
 }
 
 } // namespace serial_port_base_compile

Modified: branches/proto/v4/libs/asio/test/ssl/stream.cpp
==============================================================================
--- branches/proto/v4/libs/asio/test/ssl/stream.cpp (original)
+++ branches/proto/v4/libs/asio/test/ssl/stream.cpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -75,6 +75,11 @@
       = stream1.lowest_layer();
     (void)lowest_layer;
 
+ const ssl::stream<ip::tcp::socket>& stream3 = stream1;
+ const ssl::stream<ip::tcp::socket>::lowest_layer_type& lowest_layer2
+ = stream3.lowest_layer();
+ (void)lowest_layer2;
+
     stream1.handshake(ssl::stream_base::client);
     stream1.handshake(ssl::stream_base::server);
     stream1.handshake(ssl::stream_base::client, ec);

Modified: branches/proto/v4/libs/asio/test/windows/random_access_handle.cpp
==============================================================================
--- branches/proto/v4/libs/asio/test/windows/random_access_handle.cpp (original)
+++ branches/proto/v4/libs/asio/test/windows/random_access_handle.cpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -68,6 +68,11 @@
       = handle1.lowest_layer();
     (void)lowest_layer;
 
+ const win::random_access_handle& handle3 = handle1;
+ const win::random_access_handle::lowest_layer_type& lowest_layer2
+ = handle3.lowest_layer();
+ (void)lowest_layer2;
+
     HANDLE native_handle2 = INVALID_HANDLE_VALUE;
     handle1.assign(native_handle2);
 

Modified: branches/proto/v4/libs/asio/test/windows/stream_handle.cpp
==============================================================================
--- branches/proto/v4/libs/asio/test/windows/stream_handle.cpp (original)
+++ branches/proto/v4/libs/asio/test/windows/stream_handle.cpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -67,6 +67,11 @@
       = handle1.lowest_layer();
     (void)lowest_layer;
 
+ const win::stream_handle& handle3 = handle1;
+ const win::stream_handle::lowest_layer_type& lowest_layer2
+ = handle3.lowest_layer();
+ (void)lowest_layer2;
+
     HANDLE native_handle2 = INVALID_HANDLE_VALUE;
     handle1.assign(native_handle2);
 

Modified: branches/proto/v4/libs/asio/test/write.cpp
==============================================================================
--- branches/proto/v4/libs/asio/test/write.cpp (original)
+++ branches/proto/v4/libs/asio/test/write.cpp 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -39,7 +39,7 @@
     memset(data_, 0, max_length);
   }
 
- io_service_type& io_service()
+ io_service_type& get_io_service()
   {
     return io_service_;
   }
@@ -159,6 +159,18 @@
   BOOST_CHECK(s.check(buffers, sizeof(write_data)));
 }
 
+bool old_style_transfer_all(const boost::system::error_code& ec,
+ size_t bytes_transferred)
+{
+ return !!ec;
+}
+
+size_t short_transfer(const boost::system::error_code& ec,
+ size_t bytes_transferred)
+{
+ return !!ec ? 0 : 3;
+}
+
 void test_3_arg_write()
 {
   boost::asio::io_service ios;
@@ -245,6 +257,40 @@
       boost::asio::transfer_at_least(42));
   BOOST_CHECK(bytes_transferred == 50);
   BOOST_CHECK(s.check(buffers, 50));
+
+ s.reset();
+ bytes_transferred = boost::asio::write(s, buffers, old_style_transfer_all);
+ BOOST_CHECK(bytes_transferred == sizeof(write_data));
+ BOOST_CHECK(s.check(buffers, sizeof(write_data)));
+
+ s.reset();
+ s.next_write_length(1);
+ bytes_transferred = boost::asio::write(s, buffers, old_style_transfer_all);
+ BOOST_CHECK(bytes_transferred == sizeof(write_data));
+ BOOST_CHECK(s.check(buffers, sizeof(write_data)));
+
+ s.reset();
+ s.next_write_length(10);
+ bytes_transferred = boost::asio::write(s, buffers, old_style_transfer_all);
+ BOOST_CHECK(bytes_transferred == sizeof(write_data));
+ BOOST_CHECK(s.check(buffers, sizeof(write_data)));
+
+ s.reset();
+ bytes_transferred = boost::asio::write(s, buffers, short_transfer);
+ BOOST_CHECK(bytes_transferred == sizeof(write_data));
+ BOOST_CHECK(s.check(buffers, sizeof(write_data)));
+
+ s.reset();
+ s.next_write_length(1);
+ bytes_transferred = boost::asio::write(s, buffers, short_transfer);
+ BOOST_CHECK(bytes_transferred == sizeof(write_data));
+ BOOST_CHECK(s.check(buffers, sizeof(write_data)));
+
+ s.reset();
+ s.next_write_length(10);
+ bytes_transferred = boost::asio::write(s, buffers, short_transfer);
+ BOOST_CHECK(bytes_transferred == sizeof(write_data));
+ BOOST_CHECK(s.check(buffers, sizeof(write_data)));
 }
 
 void test_4_arg_write()
@@ -357,6 +403,53 @@
   BOOST_CHECK(bytes_transferred == 50);
   BOOST_CHECK(s.check(buffers, 50));
   BOOST_CHECK(!error);
+
+ s.reset();
+ bytes_transferred = boost::asio::write(s, buffers,
+ old_style_transfer_all, error);
+ BOOST_CHECK(bytes_transferred == sizeof(write_data));
+ BOOST_CHECK(s.check(buffers, sizeof(write_data)));
+ BOOST_CHECK(!error);
+
+ s.reset();
+ s.next_write_length(1);
+ error = boost::system::error_code();
+ bytes_transferred = boost::asio::write(s, buffers,
+ old_style_transfer_all, error);
+ BOOST_CHECK(bytes_transferred == sizeof(write_data));
+ BOOST_CHECK(s.check(buffers, sizeof(write_data)));
+ BOOST_CHECK(!error);
+
+ s.reset();
+ s.next_write_length(10);
+ error = boost::system::error_code();
+ bytes_transferred = boost::asio::write(s, buffers,
+ old_style_transfer_all, error);
+ BOOST_CHECK(bytes_transferred == sizeof(write_data));
+ BOOST_CHECK(s.check(buffers, sizeof(write_data)));
+ BOOST_CHECK(!error);
+
+ s.reset();
+ bytes_transferred = boost::asio::write(s, buffers, short_transfer, error);
+ BOOST_CHECK(bytes_transferred == sizeof(write_data));
+ BOOST_CHECK(s.check(buffers, sizeof(write_data)));
+ BOOST_CHECK(!error);
+
+ s.reset();
+ s.next_write_length(1);
+ error = boost::system::error_code();
+ bytes_transferred = boost::asio::write(s, buffers, short_transfer, error);
+ BOOST_CHECK(bytes_transferred == sizeof(write_data));
+ BOOST_CHECK(s.check(buffers, sizeof(write_data)));
+ BOOST_CHECK(!error);
+
+ s.reset();
+ s.next_write_length(10);
+ error = boost::system::error_code();
+ bytes_transferred = boost::asio::write(s, buffers, short_transfer, error);
+ BOOST_CHECK(bytes_transferred == sizeof(write_data));
+ BOOST_CHECK(s.check(buffers, sizeof(write_data)));
+ BOOST_CHECK(!error);
 }
 
 void async_write_handler(const boost::system::error_code& e,
@@ -571,6 +664,82 @@
   ios.run();
   BOOST_CHECK(called);
   BOOST_CHECK(s.check(buffers, 50));
+
+ s.reset();
+ called = false;
+ boost::asio::async_write(s, buffers, old_style_transfer_all,
+ boost::bind(async_write_handler,
+ boost::asio::placeholders::error,
+ boost::asio::placeholders::bytes_transferred,
+ sizeof(write_data), &called));
+ ios.reset();
+ ios.run();
+ BOOST_CHECK(called);
+ BOOST_CHECK(s.check(buffers, sizeof(write_data)));
+
+ s.reset();
+ s.next_write_length(1);
+ called = false;
+ boost::asio::async_write(s, buffers, old_style_transfer_all,
+ boost::bind(async_write_handler,
+ boost::asio::placeholders::error,
+ boost::asio::placeholders::bytes_transferred,
+ sizeof(write_data), &called));
+ ios.reset();
+ ios.run();
+ BOOST_CHECK(called);
+ BOOST_CHECK(s.check(buffers, sizeof(write_data)));
+
+ s.reset();
+ s.next_write_length(10);
+ called = false;
+ boost::asio::async_write(s, buffers, old_style_transfer_all,
+ boost::bind(async_write_handler,
+ boost::asio::placeholders::error,
+ boost::asio::placeholders::bytes_transferred,
+ sizeof(write_data), &called));
+ ios.reset();
+ ios.run();
+ BOOST_CHECK(called);
+ BOOST_CHECK(s.check(buffers, sizeof(write_data)));
+
+ s.reset();
+ called = false;
+ boost::asio::async_write(s, buffers, short_transfer,
+ boost::bind(async_write_handler,
+ boost::asio::placeholders::error,
+ boost::asio::placeholders::bytes_transferred,
+ sizeof(write_data), &called));
+ ios.reset();
+ ios.run();
+ BOOST_CHECK(called);
+ BOOST_CHECK(s.check(buffers, sizeof(write_data)));
+
+ s.reset();
+ s.next_write_length(1);
+ called = false;
+ boost::asio::async_write(s, buffers, short_transfer,
+ boost::bind(async_write_handler,
+ boost::asio::placeholders::error,
+ boost::asio::placeholders::bytes_transferred,
+ sizeof(write_data), &called));
+ ios.reset();
+ ios.run();
+ BOOST_CHECK(called);
+ BOOST_CHECK(s.check(buffers, sizeof(write_data)));
+
+ s.reset();
+ s.next_write_length(10);
+ called = false;
+ boost::asio::async_write(s, buffers, short_transfer,
+ boost::bind(async_write_handler,
+ boost::asio::placeholders::error,
+ boost::asio::placeholders::bytes_transferred,
+ sizeof(write_data), &called));
+ ios.reset();
+ ios.run();
+ BOOST_CHECK(called);
+ BOOST_CHECK(s.check(buffers, sizeof(write_data)));
 }
 
 test_suite* init_unit_test_suite(int, char*[])

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -7118,25 +7118,36 @@
     <dl>
       <dd>
         <h3>
- Boost 1.36
+ Boost 1.37
         </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.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>Fixed bug:<br>
+ #1919 Default constructed circular buffer throws <code>std::bad_alloc</code>.<br>
+ </li>
+ </ul>
+ </dd>
+ <dd>
+ <h3>
           Boost 1.35
         </h3>
       </dd>

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -4182,6 +4182,17 @@
     <dl>
       <dd>
         <h3>
+ Boost 1.37
+ </h3>
+ </dd>
+ <dd>
+ <ul>
+ <li>Added new methods <code>is_linearized()</code> and <code>rotate(const_iterator)</code>.
+ </li>
+ </ul>
+ </dd>
+ <dd>
+ <h3>
           Boost 1.36
         </h3>
       </dd>
@@ -4190,8 +4201,6 @@
           <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>

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-09-05 00:13:30 EDT (Fri, 05 Sep 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 V1.73.2">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
 <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><a class="link" href="acknowledgements.html" title="Acknowledgements">Acknowledgements</a>
+<a name="boost_config.acknowledgements"></a>Acknowledgements
 </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 <a class="link" href="../index.html#config_rationale">rationale</a>)
+ Vesa Karvonen provided a description of the principles (see rationale)
       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-09-05 00:13:30 EDT (Fri, 05 Sep 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 V1.73.2">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
 <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,7 +24,7 @@
 </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><a class="link" href="boost_macro_reference.html" title="Boost Macro Reference">Boost Macro Reference</a>
+<a name="boost_config.boost_macro_reference"></a>Boost Macro Reference
 </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
@@ -46,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 class="link" 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 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>
@@ -744,6 +744,24 @@
 <tr>
 <td>
               <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_RTTI</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler may (or may not) have the typeid operator, but RTTI
+ on the dynamic type of an object is not supported.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
                 <code class="computeroutput"><span class="identifier">BOOST_NO_SFINAE</span></code>
               </p>
               </td>
@@ -1204,7 +1222,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 class="link" 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 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>
@@ -2112,7 +2130,7 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<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
+<a name="boost_config.boost_macro_reference.macros_that_describe_possible_c__0x_features"></a><a 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>
@@ -2153,7 +2171,7 @@
 </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
+<a name="boost_config.boost_macro_reference.macros_that_describe_c__0x_features_not_supported"></a><a 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>
@@ -2371,7 +2389,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 class="link" 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 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>
@@ -2664,7 +2682,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 class="link" 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 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>
@@ -2903,7 +2921,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 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
+<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
       for libraries with separate source code</a>
 </h3></div></div></div>
 <div class="toc"><dl>
@@ -2920,7 +2938,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 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
+<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
         Fixing</a>
 </h4></div></div></div>
 <p>
@@ -2978,7 +2996,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 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
+<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
         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-09-05 00:13:30 EDT (Fri, 05 Sep 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 V1.73.2">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
 <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 class="link" href="guidelines_for_boost_authors.html" title="Guidelines for Boost Authors">Guidelines for
+<a name="boost_config.guidelines_for_boost_authors"></a><a 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 class="link" 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 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 class="link" 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 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>
@@ -283,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 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
+<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
       New Feature Test Macros</a>
 </h3></div></div></div>
 <p>
@@ -307,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 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
+<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
       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-09-05 00:13:30 EDT (Fri, 05 Sep 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 V1.73.2">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
 <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><a class="link" href="rationale.html" title="Rationale">Rationale</a>
+<a name="boost_config.rationale"></a>Rationale
 </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><a class="link" href="rationale.html#boost_config.rationale.the_problem" title="The problem">The problem</a>
+<a name="boost_config.rationale.the_problem"></a>The problem
 </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><a class="link" href="rationale.html#boost_config.rationale.the_solution" title="The solution">The solution</a>
+<a name="boost_config.rationale.the_solution"></a>The solution
 </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-09-05 00:13:30 EDT (Fri, 05 Sep 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 V1.73.2">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
 <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="id464982"></a><p>
+<a name="id447044"></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>
@@ -94,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 class="link" 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 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>
@@ -113,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 class="link" 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 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>
@@ -137,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 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
+<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
       &lt;boost/config.hpp&gt; header</a>
 </h3></div></div></div>
 <p>
@@ -152,10 +152,10 @@
         them usable by both Boost library and user code.
       </p>
 <p>
- 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>
+ Boost informational or helper
         macros are designed for use by Boost users as well as for our own internal
- 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
+ use. Note however, that the feature test
+ and defect test 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
@@ -170,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 class="link" 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 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">
@@ -320,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 class="link" 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 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>
@@ -684,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 class="link" 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 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>
@@ -709,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, <a class="link" href="index.html#config_user_settable">see user settable macros</a>),
+ etc, see user settable macros),
         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 class="link" href="index.html#config_user_settable">see
+ to disable including any compiler configuration file - <a href="index.html#config_user_settable">see
         user settable macros</a>).
       </p>
 <p>
@@ -728,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 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
+<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
         1, creating our own frozen configuration</a>
 </h4></div></div></div>
 <p>
@@ -760,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 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
+<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
         2: skipping files that you don't need</a>
 </h4></div></div></div>
 <p>
@@ -779,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 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
+<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
         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 class="link" href="index.html#config_config_script">see using the configure
+ compiler setup - <a 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 class="link" 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 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>
@@ -962,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: June 20, 2008 at 00:19:08 GMT</small></p></td>
+<td align="left"><p><small>Last revised: August 25, 2008 at 09:59:24 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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -192,6 +192,10 @@
 The compiler misreads 8.5.1, treating classes as non-aggregate if they
 contain private or protected member functions.
 ]]
+[[`BOOST_NO_RTTI`][Compiler][
+The compiler may (or may not) have the typeid operator, but RTTI on the dynamic type
+of an object is not supported.
+]]
 [[`BOOST_NO_SFINAE`][Compiler][
 The compiler does not support the "Substitution Failure Is Not An Error"
 meta-programming idiom.

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-09-05 00:13:30 EDT (Fri, 05 Sep 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 Sat Jul 12 12:39:35 2008
+# This file was automatically generated on Mon Aug 25 10:51:52 2008
 # by libs/config/tools/generate.cpp
 # Copyright John Maddock.
 # Use, modification and distribution are subject to the
@@ -292,6 +292,9 @@
 test-suite "BOOST_NO_UNREACHABLE_RETURN_DETECTION" :
 [ run ../no_ret_det_pass.cpp ]
 [ compile-fail ../no_ret_det_fail.cpp ] ;
+test-suite "BOOST_NO_RTTI" :
+[ run ../no_rtti_pass.cpp ]
+[ compile-fail ../no_rtti_fail.cpp ] ;
 test-suite "BOOST_NO_SFINAE" :
 [ run ../no_sfinae_pass.cpp ]
 [ compile-fail ../no_sfinae_fail.cpp ] ;

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -987,6 +987,7 @@
    PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_CONST);
    PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS);
    PRINT_MACRO(BOOST_NO_PRIVATE_IN_AGGREGATE);
+ PRINT_MACRO(BOOST_NO_RTTI);
    PRINT_MACRO(BOOST_NO_SFINAE);
    PRINT_MACRO(BOOST_NO_STDC_NAMESPACE);
    PRINT_MACRO(BOOST_NO_STD_ALLOCATOR);
@@ -1035,6 +1036,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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -1,4 +1,4 @@
-// This file was automatically generated on Sat Jul 12 12:39:34 2008
+// This file was automatically generated on Mon Aug 25 10:51:52 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // Use, modification and distribution are subject to the
@@ -217,6 +217,11 @@
 #else
 namespace boost_no_unreachable_return_detection = empty_boost;
 #endif
+#ifndef BOOST_NO_RTTI
+#include "boost_no_rtti.ipp"
+#else
+namespace boost_no_rtti = empty_boost;
+#endif
 #ifndef BOOST_NO_SFINAE
 #include "boost_no_sfinae.ipp"
 #else
@@ -1051,6 +1056,11 @@
       std::cerr << "Failed test for BOOST_NO_UNREACHABLE_RETURN_DETECTION at: " << __FILE__ << ":" << __LINE__ << std::endl;
       ++error_count;
    }
+ if(0 != boost_no_rtti::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_RTTI at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
    if(0 != boost_no_sfinae::test())
    {
       std::cerr << "Failed test for BOOST_NO_SFINAE at: " << __FILE__ << ":" << __LINE__ << std::endl;

Deleted: branches/proto/v4/libs/exception/doc/BOOST_ERROR_INFO.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/BOOST_ERROR_INFO.html 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
+++ (empty file)
@@ -1,61 +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>BOOST_ERROR_INFO</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"><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 <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) -->
-<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/boost-exception.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/boost-exception.html (original)
+++ branches/proto/v4/libs/exception/doc/boost-exception.html 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -37,7 +37,6 @@
 <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><span class="RenoLink">N2179</span> Transporting of Exceptions between Threads<div><ol><li><span class="RenoLink">exception_ptr</span></li>
@@ -49,13 +48,13 @@
 </ol></div>
 </li>
 <li><span class="RenoLink">diagnostic_information</span></li>
-<li><span class="RenoLink">throw_exception</span></li>
+<li><span class="RenoLink">throw_exception</span>, <span class="RenoLink">BOOST_THROW_EXCEPTION</span></li>
+<li><span class="RenoLink">Configuration</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/get_error_info.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>
@@ -74,16 +73,25 @@
 <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>
+ };</span>
+
+ <span class="RenoIncludeSPAN">template &lt;class Tag,class T&gt;
+ class <span class="RenoLink">error_info</span>;</span>
+
+ 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;
+
+ <span class="RenoIncludeSPAN">template &lt;class T&gt;
+ ---unspecified--- <span class="RenoLink">enable_error_info</span>( T const &amp; x );</span>
+
+ <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">template &lt;class Tag,class T&gt;
     class
@@ -96,18 +104,6 @@
         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>
 
@@ -118,10 +114,8 @@
             ...,
             <span class="RenoLink">error_info</span>&lt;TagN,TN&gt; &gt; const &amp; v );</span></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="RenoIncludeSPAN">std::string <span class="RenoLink">diagnostic_information</span>( std::exception const &amp; x );</span></span>
+<span class="RenoIncludeSPAN"> <span class="RenoIncludeSPAN">class <span class="RenoLink">exception</span>;</span>
+ <span class="RenoIncludeSPAN">std::string <span class="RenoLink">diagnostic_information</span>( boost::<span class="RenoLink">exception</span> const &amp; x );</span></span>
 
 <span class="RenoIncludeSPAN"> <span class="RenoIncludeSPAN">class
     <span class="RenoLink">unknown_exception</span>:
@@ -139,21 +133,30 @@
     <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>
+<p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/throw_exception.hpp</span>&gt;</p>
+<pre><span class="RenoIncludeSPAN"><span class="RenoIncludeSPAN">#if !defined( BOOST_NO_EXCEPTIONS ) &amp;&amp; !defined( BOOST_EXCEPTION_DISABLE )
+ #include &lt;<span class="RenoLink">boost/exception/exception.hpp</span>&gt;
+ #include &lt;boost/current_function.hpp&gt;
+ #define <span class="RenoLink">BOOST_THROW_EXCEPTION</span>(x)\
+ ::boost::<span class="RenoLink">throw_exception</span>( ::boost::<span class="RenoLink">enable_error_info</span>(x) &lt;&lt;\
+ ::boost::<span class="RenoLink">throw_function</span>(BOOST_CURRENT_FUNCTION) &lt;&lt;\
+ ::boost::<span class="RenoLink">throw_file</span>(__FILE__) &lt;&lt;\
+ ::boost::<span class="RenoLink">throw_line</span>((int)__LINE__) )
+#else
+ #define <span class="RenoLink">BOOST_THROW_EXCEPTION</span>(x) ::boost::<span class="RenoLink">throw_exception</span>(x)
+#endif</span>
 
-<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
-
+namespace
+boost
+ {
+<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></span>
- }</pre>
+#endif</span>
+ }</span></pre>
 <h2>Class exception</h2>
 <div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>exception</h3>
 </div>
@@ -164,10 +167,6 @@
 <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>();
@@ -178,35 +177,7 @@
 </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 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"><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 boost::<span class="RenoLink">exception</span> object.</p>
-<h4>Throws:</h4>
-<p>Nothing.</p>
-</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>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>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><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>
@@ -274,7 +245,7 @@
 <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>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception/get_error_info.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
@@ -284,6 +255,7 @@
 </div><h4>Requirements:</h4>
 <div><ul><li> ErrorInfo must be an instance of the <span class="RenoLink">error_info</span> template.</li>
 <li> E must be polymorphic.</li>
+<li> The <span class="RenoLink">get_error_info</span> function must not be called outside of a catch block.</li>
 </ul></div>
 <h4>Returns:</h4>
 <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>
@@ -291,9 +263,11 @@
 </ul></div>
 <h4>Throws:</h4>
 <p>Nothing.</p>
+<h4>Note:</h4>
+<p>The interface of <span class="RenoLink">get_error_info</span> may be affected by the build <span class="RenoLink">Configuration</span>.</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>
+<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
     {
@@ -301,29 +275,13 @@
     ---unspecified--- <span class="RenoLink">enable_error_info</span>( T const &amp; x );</span>
     }</pre>
 </div><h4>Requirements:</h4>
-<p>T must be a user-defined type with accessible no-throw copy constructor as per (15.5.1).</p>
+<p>T must be a class with an accessible no-throw copy constructor as per (15.5.1).</p>
 <h4>Returns:</h4>
 <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"><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 <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"><div class="RenoAutoDIV"><h3>exception_ptr</h3>
 </div>
@@ -336,9 +294,14 @@
 </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>
+<h4>Thread safety</h4>
+<div><ul><li> It is legal for multiple threads to hold <span class="RenoLink">exception_ptr</span> references to the same exception object.</li>
+<li> It is illegal for multiple threads to modify the same <span class="RenoLink">exception_ptr</span> object concurrently.</li>
+<li> While calling <span class="RenoLink">current_exception</span> makes a copy of the current exception object, it is still possible for the two copies to share internal state. Therefore, in general it is not safe to call <span class="RenoLink">rethrow_exception</span> concurrently to throw the same exception object into multiple threads.</li>
+</ul></div>
 </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>
+<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
     {
@@ -346,7 +309,7 @@
     ---unspecified--- <span class="RenoLink">enable_current_exception</span>( T const &amp; e );</span>
     }</pre>
 </div><h4>Requirements:</h4>
-<p>T must be of user-defined type with an accessible no-throw copy constructor.</p>
+<p>T must be a class with an accessible no-throw copy constructor.</p>
 <h4>Returns:</h4>
 <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>
@@ -392,7 +355,15 @@
     <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 try { throw e; } catch( ... ) { return <span class="RenoLink">current_exception</span>(); }</p>
+<p>As if</p>
+<pre>try
+ {
+ throw <span class="RenoLink">enable_current_exception</span>(e);
+ }
+catch(...)
+ {
+ return <span class="RenoLink">current_exception</span>();
+ }</pre>
 </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>
@@ -423,14 +394,23 @@
 </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>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception/diagnostic_information.hpp</span>&gt;<span class="RenoBR">&nbsp;</span><br/></p>
 <pre>namespace
 boost
     {
-<span class="RenoIncludeSPAN"> std::string <span class="RenoLink">diagnostic_information</span>( std::exception const &amp; x );</span>
+<span class="RenoIncludeSPAN"> std::string <span class="RenoLink">diagnostic_information</span>( boost::<span class="RenoLink">exception</span> 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>
+<p>This function iterates over all data objects stored in the boost::<span class="RenoLink">exception</span> through <span class="RenoLink">operator<<</span>. The returned string is constructed by converting each data object to string and then concatenating these strings together.</p>
+<p>When the <span class="RenoLink">error_info</span>&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.</p>
+<p>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.</p>
+<p>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.</p>
+<h4>Notes:</h4>
+<div><ul><li>The format of the returned string is unspecified.</li>
+<li>The returned string is <i>not</i> user-friendly.</li>
+<li>If dynamic_cast&lt;std::exception const *&gt;(&amp;x) is not null, the returned string includes the output from std::exception::what.</li>
+<li>The returned string may include additional platform-specific diagnostic information.</li>
+</ul></div>
 </div><h2>Throwing Exceptions</h2>
 <div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>throw_exception</h3>
 </div>
@@ -438,16 +418,12 @@
 <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>E must derive publicly from std::exception.</p>
@@ -455,7 +431,9 @@
 <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. -->
+</div><h2>Acknowledgements</h2>
+<p>Peter Dimov has been continuously influencing the design and evolution of Boost Exception. Also thanks to Tobias Schwinger, Tom Brinkman, Pavel Vozenilek and everyone who participated in the review process.</p>
+<!-- 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">

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -29,7 +29,15 @@
     <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 try { throw e; } catch( ... ) { return <span class="RenoLink">current_exception</span>(); }</p>
+<p>As if</p>
+<pre>try
+ {
+ throw <span class="RenoLink">enable_current_exception</span>(e);
+ }
+catch(...)
+ {
+ return <span class="RenoLink">current_exception</span>();
+ }</pre>
 </div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
 <h3>See Also:</h3>
 <div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -45,6 +45,7 @@
 </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>

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -21,7 +21,7 @@
 <!-- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -->
 <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>
+<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
     {
@@ -29,7 +29,7 @@
     ---unspecified--- <span class="RenoLink">enable_current_exception</span>( T const &amp; e );</span>
     }</pre>
 </div><h4>Requirements:</h4>
-<p>T must be of user-defined type with an accessible no-throw copy constructor.</p>
+<p>T must be a class with an accessible no-throw copy constructor.</p>
 <h4>Returns:</h4>
 <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>
@@ -48,7 +48,9 @@
 </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_exception_hpp.html">boost/exception/exception.hpp<br/>
+</a><a href="Configuration.html">Configuration<br/>
+</a><a href="copy_exception.html">copy_exception<br/>
 </a><a href="current_exception.html">current_exception<br/>
 </a><a href="tutorial_exception_ptr.html">Transporting of Exceptions Between Threads<br/>
 </a><a href="throw_exception.html">throw_exception<br/>

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -21,7 +21,7 @@
 <!-- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -->
 <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>
+<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
     {
@@ -29,7 +29,7 @@
     ---unspecified--- <span class="RenoLink">enable_error_info</span>( T const &amp; x );</span>
     }</pre>
 </div><h4>Requirements:</h4>
-<p>T must be a user-defined type with accessible no-throw copy constructor as per (15.5.1).</p>
+<p>T must be a class with an accessible no-throw copy constructor as per (15.5.1).</p>
 <h4>Returns:</h4>
 <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>
@@ -38,8 +38,10 @@
 <p>Nothing.</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_error_info_hpp.html">boost/exception/enable_error_info.hpp<br/>
+<div class="RenoPageList"><a href="BOOST_THROW_EXCEPTION.html">BOOST_THROW_EXCEPTION<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="Configuration.html">Configuration<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>

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -48,11 +48,11 @@
 <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/>
+<div class="RenoPageList"><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_exception_hpp.html">boost/exception/exception.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="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/>

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -28,10 +28,6 @@
 <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>();
@@ -42,46 +38,18 @@
 </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 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"><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 boost::<span class="RenoLink">exception</span> object.</p>
-<h4>Throws:</h4>
-<p>Nothing.</p>
-</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>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>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>
+</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/>
+<div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
+</a><a href="boost_exception_diagnostic_information_hpp.html">boost/exception/diagnostic_information.hpp<br/>
 </a><a href="exception_exception_hpp.html">boost/exception/exception.hpp<br/>
+</a><a href="Configuration.html">Configuration<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/>

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -25,7 +25,7 @@
 <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 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>
+<li> Copy constructor: initializes a boost::<span class="RenoLink">exception</span> object which shares ownership with x of 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>

Deleted: branches/proto/v4/libs/exception/doc/exception_enable_error_info_hpp.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_enable_error_info_hpp.html 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
+++ (empty file)
@@ -1,57 +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>boost/exception/enable_error_info.hpp</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"><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) -->
-<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>

Deleted: branches/proto/v4/libs/exception/doc/exception_enable_exception_cloning_hpp.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_enable_exception_cloning_hpp.html 2008-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
+++ (empty file)
@@ -1,57 +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>boost/exception/enable_current_exception.hpp</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"><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) -->
-<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/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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -40,28 +40,14 @@
         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/>
+<div class="RenoPageList"><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>

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -31,6 +31,7 @@
 </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="error_info.html">error_info<br/>
 </a></div>
 </div>

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -28,24 +28,35 @@
 <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>
+ };</span>
+
+ <span class="RenoIncludeSPAN">template &lt;class Tag,class T&gt;
+ class <span class="RenoLink">error_info</span>;</span>
+
+ 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;
+
+ <span class="RenoIncludeSPAN">template &lt;class T&gt;
+ ---unspecified--- <span class="RenoLink">enable_error_info</span>( T const &amp; x );</span>
+
+ <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="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/>
+<div class="RenoPageList"><a href="BOOST_THROW_EXCEPTION.html">BOOST_THROW_EXCEPTION<br/>
+</a><a href="boost-exception.html">Boost Exception<br/>
+</a><a href="exception_hpp.html">boost/exception.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="enable_current_exception.html">enable_current_exception<br/>
+</a><a href="enable_error_info.html">enable_error_info<br/>
 </a><a href="exception.html">exception<br/>
 </a></div>
 </div>

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -22,11 +22,13 @@
 <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;
+<div class="RenoIncludeDIV"><pre><span class="RenoIncludeSPAN">#include &lt;<span class="RenoLink">boost/exception/diagnostic_information.hpp</span>&gt;
+#include &lt;<span class="RenoLink">boost/exception/error_info.hpp</span>&gt;
+#include &lt;<span class="RenoLink">boost/exception/exception.hpp</span>&gt;
+#include &lt;<span class="RenoLink">boost/exception/get_error_info.hpp</span>&gt;
+#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>
+#include &lt;<span class="RenoLink">boost/exception_ptr.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/>

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -30,6 +30,11 @@
 </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>
+<h4>Thread safety</h4>
+<div><ul><li> It is legal for multiple threads to hold <span class="RenoLink">exception_ptr</span> references to the same exception object.</li>
+<li> It is illegal for multiple threads to modify the same <span class="RenoLink">exception_ptr</span> object concurrently.</li>
+<li> While calling <span class="RenoLink">current_exception</span> makes a copy of the current exception object, it is still possible for the two copies to share internal state. Therefore, in general it is not safe to call <span class="RenoLink">rethrow_exception</span> concurrently to throw the same exception object into multiple threads.</li>
+</ul></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/>

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -21,7 +21,7 @@
 <!-- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -->
 <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>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception/get_error_info.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
@@ -31,6 +31,7 @@
 </div><h4>Requirements:</h4>
 <div><ul><li> ErrorInfo must be an instance of the <span class="RenoLink">error_info</span> template.</li>
 <li> E must be polymorphic.</li>
+<li> The <span class="RenoLink">get_error_info</span> function must not be called outside of a catch block.</li>
 </ul></div>
 <h4>Returns:</h4>
 <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>
@@ -38,10 +39,14 @@
 </ul></div>
 <h4>Throws:</h4>
 <p>Nothing.</p>
+<h4>Note:</h4>
+<p>The interface of <span class="RenoLink">get_error_info</span> may be affected by the build <span class="RenoLink">Configuration</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_error_info_hpp.html">boost/exception/info.hpp<br/>
+<div class="RenoPageList"><a href="BOOST_THROW_EXCEPTION.html">BOOST_THROW_EXCEPTION<br/>
+</a><a href="boost-exception.html">Boost Exception<br/>
+</a><a href="boost_exception_get_error_info_hpp.html">boost/exception/get_error_info.hpp<br/>
+</a><a href="Configuration.html">Configuration<br/>
 </a><a href="error_info.html">error_info<br/>
 </a><a href="exception.html">exception<br/>
 </a></div>

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -22,19 +22,20 @@
 <div class="RenoAutoDIV"><h1>Index</h1>
 </div>
 <div class="RenoIndex"><h3>B</h3>
-<p>BOOST_ERROR_INFO</p>
+<p>BOOST_THROW_EXCEPTION</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>
 <p>boost/exception/exception.hpp</p>
+<p>boost/exception/get_error_info.hpp</p>
 <p>boost/exception/info.hpp</p>
 <p>boost/exception/info_tuple.hpp</p>
 <p>boost/exception_ptr.hpp</p>
 <p>boost/throw_exception.hpp</p>
+<h3>C</h3>
+<p>Configuration</p>
 <h3>c</h3>
 <p>copy_exception</p>
 <p>current_exception</p>
@@ -47,13 +48,13 @@
 <p>enable_error_info</p>
 <p>error_info</p>
 <p>exception</p>
-<p>exception::diagnostic_information</p>
 <p>exception::exception</p>
 <p>exception::~exception</p>
 <p>exception_ptr</p>
 <h3>g</h3>
 <p>get_error_info</p>
 <h3>I</h3>
+<p>Index</p>
 <p>Integrating Boost Exception in Existing Exception Class Hierarchies</p>
 <h3>o</h3>
 <p>operator<</exception</p>

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -38,13 +38,12 @@
 <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/>
+<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="tutorial_diagnostic_information.html">Diagnostic Information<br/>
+</a><a href="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="tutorial_enable_error_info.html">Integrating Boost Exception in Existing Exception Class Hierarchies<br/>

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -35,6 +35,7 @@
 <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="exception_ptr.html">exception_ptr<br/>
 </a></div>
 </div>
 <!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->

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-09-05 00:13:30 EDT (Fri, 05 Sep 2008)
@@ -39,7 +39,7 @@
                                                                         </type>
                                                                         <object>
                                                                                 <sorted>
- <size>39</size>
+ <size>38</size>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
@@ -53,29 +53,33 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
- <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>
+ <size>3</size>
+ <strong>612485E090D76B2CC43C1A296F813075BA165C2496082E78E939F10B3DA8E09A</strong>
+ <weak>1770110914</weak>
+ <size>587</size>
+ <position>1566</position>
+ <strong>60F3F48B87487FA6E0D2CCC0750AF435CC92CEC80BBBF609AC71295031AADD0D</strong>
+ <weak>3929437933</weak>
+ <size>361</size>
+ <position>213</position>
+ <strong>CD1241D84950468704F3C3F04116B8DA5162A8BEA4364F10951232F49113C5DE</strong>
+ <weak>1658463867</weak>
+ <size>121</size>
+ <position>238</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>
                                                                                                                         </hook>
                                                                                                                         <title>
- <string>rethrow_exception</string>
+ <string>Configuration</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
                                                                                                                                 <string></string>
@@ -102,40 +106,34 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
- <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>
+ <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>
                                                           &