Boost logo

Boost-Commit :

From: eric_at_[hidden]
Date: 2008-04-22 16:29:28


Author: eric_niebler
Date: 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
New Revision: 44725
URL: http://svn.boost.org/trac/boost/changeset/44725

Log:
Merged revisions 44678-44679,44681-44689,44691-44692,44694,44697-44699,44704-44707,44711,44715,44717-44719,44722 via svnmerge from
https://svn.boost.org/svn/boost/trunk

........
  r44678 | chris_kohlhoff | 2008-04-20 22:43:42 -0700 (Sun, 20 Apr 2008) | 3 lines
  
  Add porthopper example to demonstrate applications that mix synchronous and
  asynchronous operations.
........
  r44679 | chris_kohlhoff | 2008-04-20 22:52:20 -0700 (Sun, 20 Apr 2008) | 3 lines
  
  Remove a local variable that was hiding the ec parameter and preventing
  error codes from being correctly propagated. Fixes #1820.
........
  r44681 | chris_kohlhoff | 2008-04-20 23:14:29 -0700 (Sun, 20 Apr 2008) | 2 lines
  
  Ensure all non-friend related functions are included in the documentation.
........
  r44682 | chris_kohlhoff | 2008-04-20 23:15:17 -0700 (Sun, 20 Apr 2008) | 3 lines
  
  Add UNIX domain sockets, POSIX stream-oriented descriptors and Windows
  stream-oriented handles to the reference documentation.
........
  r44683 | chris_kohlhoff | 2008-04-20 23:15:50 -0700 (Sun, 20 Apr 2008) | 2 lines
  
  Regenerate documentation.
........
  r44684 | chris_kohlhoff | 2008-04-20 23:20:32 -0700 (Sun, 20 Apr 2008) | 3 lines
  
  Add documentation on the limits of the number of buffers that may be
  transferred in individual operations.
........
  r44685 | chris_kohlhoff | 2008-04-21 00:59:21 -0700 (Mon, 21 Apr 2008) | 3 lines
  
  Add requirements for handle and descriptor services. Add new classes to the
  quickref index page.
........
  r44686 | jhunold | 2008-04-21 01:07:55 -0700 (Mon, 21 Apr 2008) | 2 lines
  
  Remove trailing comma at end of enumerator list (gcc 4.x -pedantic error)
........
  r44687 | johnmaddock | 2008-04-21 01:46:18 -0700 (Mon, 21 Apr 2008) | 1 line
  
  Oops fix typo.
........
  r44688 | johnmaddock | 2008-04-21 01:47:04 -0700 (Mon, 21 Apr 2008) | 1 line
  
  Fix msvc warnings using new warning suppression header.
........
  r44689 | johnmaddock | 2008-04-21 02:19:30 -0700 (Mon, 21 Apr 2008) | 1 line
  
  Added new macro BOOST_NO_TEMPLATED_IOSTREAMS in response to issue #1765.
........
  r44691 | speedsnail | 2008-04-21 04:46:03 -0700 (Mon, 21 Apr 2008) | 1 line
  
  removed act-as-jamfile, which gives errors when boost.use-project is not invoked from Jamroot file.
........
  r44692 | johnmaddock | 2008-04-21 05:06:02 -0700 (Mon, 21 Apr 2008) | 2 lines
  
  Changed macro BOOST_PARTIAL_SPECIALIZATION_EXPLICIT_ARGS to BOOST_NO_PARTIAL_SPECIALIZATION_DEFAULT_ARGS.
  Changed <utility> to <boost/config/no_tr1/utility.hpp> in order to prevent cyclic dependencies between Fusion Tuples and TR1.
........
  r44694 | johnmaddock | 2008-04-21 06:00:16 -0700 (Mon, 21 Apr 2008) | 2 lines
  
  Merged changes from the Sandbox, and rebuilt the docs.
  Also added some missing files.
........
  r44697 | danieljames | 2008-04-21 08:55:40 -0700 (Mon, 21 Apr 2008) | 1 line
  
  Factor out the code for choosing the bucket count, and which bucket that hash values map to make it easier to experiment with alternative policies.
........
  r44698 | anthonyw | 2008-04-21 09:20:31 -0700 (Mon, 21 Apr 2008) | 1 line
  
  added private copy assignment operator and copy constructor to remove warnings
........
  r44699 | anthonyw | 2008-04-21 09:22:16 -0700 (Mon, 21 Apr 2008) | 1 line
  
  Revamped condition variable to try and fix swallowed-notify problems (trac issue #1834)
........
  r44704 | pdimov | 2008-04-21 14:29:28 -0700 (Mon, 21 Apr 2008) | 1 line
  
  Add ref_fn_test.cpp per #1846.
........
  r44705 | pdimov | 2008-04-21 14:42:29 -0700 (Mon, 21 Apr 2008) | 1 line
  
  Fix #1846.
........
  r44706 | emildotchevski | 2008-04-21 15:42:54 -0700 (Mon, 21 Apr 2008) | 1 line
  
  Fixed MSVC-specific compile errors when /Za command-line option is used, due to lack of throw() in std::~exception().
........
  r44707 | pdimov | 2008-04-21 16:01:51 -0700 (Mon, 21 Apr 2008) | 1 line
  
  Honor BOOST_NO_TEMPLATED_IOSTREAMS.
........
  r44711 | daniel_frey | 2008-04-21 23:31:32 -0700 (Mon, 21 Apr 2008) | 1 line
  
  Avoid unneccessary increment/decrement of reference count
........
  r44715 | johnmaddock | 2008-04-22 01:34:43 -0700 (Tue, 22 Apr 2008) | 1 line
  
  Added new files.
........
  r44717 | dgregor | 2008-04-22 05:24:25 -0700 (Tue, 22 Apr 2008) | 1 line
  
  Resource-constrained shortest paths, from Michael Drexl
........
  r44718 | hkaiser | 2008-04-22 07:13:58 -0700 (Tue, 22 Apr 2008) | 2 lines
  
  Spirit: Started to add '#include <boost/config/warning_disable.hpp>' to tests and examples.
........
  r44719 | hkaiser | 2008-04-22 08:10:52 -0700 (Tue, 22 Apr 2008) | 1 line
  
  Spirit.Support: Minor change
........
  r44722 | hkaiser | 2008-04-22 10:23:21 -0700 (Tue, 22 Apr 2008) | 1 line
  
  Wave: fixed #1843
........

Added:
   branches/proto/v4/boost/graph/r_c_shortest_paths.hpp
      - copied unchanged from r44722, /trunk/boost/graph/r_c_shortest_paths.hpp
   branches/proto/v4/libs/asio/doc/requirements/DescriptorService.qbk
      - copied unchanged from r44722, /trunk/libs/asio/doc/requirements/DescriptorService.qbk
   branches/proto/v4/libs/asio/doc/requirements/HandleService.qbk
      - copied unchanged from r44722, /trunk/libs/asio/doc/requirements/HandleService.qbk
   branches/proto/v4/libs/asio/doc/requirements/StreamDescriptorService.qbk
      - copied unchanged from r44722, /trunk/libs/asio/doc/requirements/StreamDescriptorService.qbk
   branches/proto/v4/libs/asio/doc/requirements/StreamHandleService.qbk
      - copied unchanged from r44722, /trunk/libs/asio/doc/requirements/StreamHandleService.qbk
   branches/proto/v4/libs/asio/example/porthopper/
      - copied from r44722, /trunk/libs/asio/example/porthopper/
   branches/proto/v4/libs/asio/example/porthopper/Jamfile
      - copied unchanged from r44722, /trunk/libs/asio/example/porthopper/Jamfile
   branches/proto/v4/libs/asio/example/porthopper/Jamfile.v2
      - copied unchanged from r44722, /trunk/libs/asio/example/porthopper/Jamfile.v2
   branches/proto/v4/libs/asio/example/porthopper/client.cpp
      - copied unchanged from r44722, /trunk/libs/asio/example/porthopper/client.cpp
   branches/proto/v4/libs/asio/example/porthopper/protocol.hpp
      - copied unchanged from r44722, /trunk/libs/asio/example/porthopper/protocol.hpp
   branches/proto/v4/libs/asio/example/porthopper/server.cpp
      - copied unchanged from r44722, /trunk/libs/asio/example/porthopper/server.cpp
   branches/proto/v4/libs/bind/test/ref_fn_test.cpp
      - copied unchanged from r44722, /trunk/libs/bind/test/ref_fn_test.cpp
   branches/proto/v4/libs/config/test/boost_no_part_spec_def_args.ipp
      - copied unchanged from r44722, /trunk/libs/config/test/boost_no_part_spec_def_args.ipp
   branches/proto/v4/libs/config/test/boost_no_template_streams.ipp
      - copied unchanged from r44722, /trunk/libs/config/test/boost_no_template_streams.ipp
   branches/proto/v4/libs/config/test/no_part_spec_def_args_fail.cpp
      - copied unchanged from r44722, /trunk/libs/config/test/no_part_spec_def_args_fail.cpp
   branches/proto/v4/libs/config/test/no_part_spec_def_args_pass.cpp
      - copied unchanged from r44722, /trunk/libs/config/test/no_part_spec_def_args_pass.cpp
   branches/proto/v4/libs/config/test/no_template_streams_fail.cpp
      - copied unchanged from r44722, /trunk/libs/config/test/no_template_streams_fail.cpp
   branches/proto/v4/libs/config/test/no_template_streams_pass.cpp
      - copied unchanged from r44722, /trunk/libs/config/test/no_template_streams_pass.cpp
   branches/proto/v4/libs/graph/doc/r_c_shortest_paths.html
      - copied unchanged from r44722, /trunk/libs/graph/doc/r_c_shortest_paths.html
   branches/proto/v4/libs/graph/example/r_c_shortest_paths_example.cpp
      - copied unchanged from r44722, /trunk/libs/graph/example/r_c_shortest_paths_example.cpp
   branches/proto/v4/libs/graph/test/r_c_shortest_paths_test.cpp
      - copied unchanged from r44722, /trunk/libs/graph/test/r_c_shortest_paths_test.cpp
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/generate.sh
      - copied unchanged from r44722, /trunk/libs/math/doc/sf_and_dist/equations/generate.sh
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/ibeta9.png
      - copied unchanged from r44722, /trunk/libs/math/doc/sf_and_dist/equations/ibeta9.png
   branches/proto/v4/libs/math/doc/sf_and_dist/graphs/ellint_carlson.png
      - copied unchanged from r44722, /trunk/libs/math/doc/sf_and_dist/graphs/ellint_carlson.png
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_beta_dist.html
      - copied unchanged from r44722, /trunk/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_beta_dist.html
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_chi_squared_dist.html
      - copied unchanged from r44722, /trunk/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_chi_squared_dist.html
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_f_dist.html
      - copied unchanged from r44722, /trunk/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_f_dist.html
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_t_dist.html
      - copied unchanged from r44722, /trunk/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_t_dist.html
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/nccs_eg/
      - copied from r44722, /trunk/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/nccs_eg/
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/nccs_eg.html
      - copied unchanged from r44722, /trunk/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/nccs_eg.html
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/nccs_eg/nccs_power_eg.html
      - copied unchanged from r44722, /trunk/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/nccs_eg/nccs_power_eg.html
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/expint/
      - copied from r44722, /trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/expint/
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/expint.html
      - copied unchanged from r44722, /trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/expint.html
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/expint/expint_i.html
      - copied unchanged from r44722, /trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/expint/expint_i.html
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/expint/expint_n.html
      - copied unchanged from r44722, /trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/expint/expint_n.html
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/ct_pow.html
      - copied unchanged from r44722, /trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/ct_pow.html
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding/
      - copied from r44722, /trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding/
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding.html
      - copied unchanged from r44722, /trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding.html
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding/modf.html
      - copied unchanged from r44722, /trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding/modf.html
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding/round.html
      - copied unchanged from r44722, /trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding/round.html
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding/trunc.html
      - copied unchanged from r44722, /trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding/trunc.html
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/zetas/
      - copied from r44722, /trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/zetas/
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/zetas.html
      - copied unchanged from r44722, /trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/zetas.html
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/zetas/zeta.html
      - copied unchanged from r44722, /trunk/libs/math/doc/sf_and_dist/html/math_toolkit/special/zetas/zeta.html
Properties modified:
   branches/proto/v4/ (props changed)
Text files modified:
   branches/proto/v4/boost/asio/detail/win_iocp_socket_service.hpp | 1
   branches/proto/v4/boost/config/compiler/vacpp.hpp | 2
   branches/proto/v4/boost/config/suffix.hpp | 9
   branches/proto/v4/boost/detail/shared_count.hpp | 20
   branches/proto/v4/boost/exception/enable_error_info.hpp | 4
   branches/proto/v4/boost/exception_ptr.hpp | 8
   branches/proto/v4/boost/fusion/adapted/array/detail/category_of_impl.hpp | 2
   branches/proto/v4/boost/fusion/adapted/array/tag_of.hpp | 2
   branches/proto/v4/boost/fusion/adapted/boost_tuple/tag_of.hpp | 4
   branches/proto/v4/boost/fusion/adapted/std_pair.hpp | 4
   branches/proto/v4/boost/fusion/adapted/std_pair/detail/category_of_impl.hpp | 2
   branches/proto/v4/boost/fusion/adapted/std_pair/std_pair_iterator.hpp | 2
   branches/proto/v4/boost/fusion/adapted/std_pair/tag_of.hpp | 2
   branches/proto/v4/boost/fusion/adapted/struct/adapt_assoc_struct.hpp | 2
   branches/proto/v4/boost/fusion/adapted/struct/adapt_struct.hpp | 2
   branches/proto/v4/boost/fusion/adapted/struct/detail/category_of_impl.hpp | 2
   branches/proto/v4/boost/fusion/adapted/struct/struct_iterator.hpp | 2
   branches/proto/v4/boost/fusion/algorithm/transformation/transform.hpp | 2
   branches/proto/v4/boost/fusion/algorithm/transformation/zip.hpp | 2
   branches/proto/v4/boost/fusion/container/generation/deque_tie.hpp | 2
   branches/proto/v4/boost/fusion/container/generation/list_tie.hpp | 2
   branches/proto/v4/boost/fusion/container/generation/make_deque.hpp | 2
   branches/proto/v4/boost/fusion/container/generation/make_list.hpp | 2
   branches/proto/v4/boost/fusion/container/generation/make_map.hpp | 2
   branches/proto/v4/boost/fusion/container/generation/make_set.hpp | 2
   branches/proto/v4/boost/fusion/container/generation/make_vector.hpp | 2
   branches/proto/v4/boost/fusion/container/generation/map_tie.hpp | 2
   branches/proto/v4/boost/fusion/container/generation/vector_tie.hpp | 2
   branches/proto/v4/boost/fusion/support/tag_of.hpp | 2
   branches/proto/v4/boost/fusion/view/transform_view/transform_view.hpp | 2
   branches/proto/v4/boost/memory_order.hpp | 2
   branches/proto/v4/boost/shared_ptr.hpp | 2
   branches/proto/v4/boost/spirit/home/support/iterators/detail/combine_policies.hpp | 3
   branches/proto/v4/boost/thread/win32/condition_variable.hpp | 230
   branches/proto/v4/boost/thread/win32/thread.hpp | 3
   branches/proto/v4/boost/unordered/detail/hash_table.hpp | 27
   branches/proto/v4/boost/unordered/detail/hash_table_impl.hpp | 75
   branches/proto/v4/boost/utility/addressof.hpp | 39
   branches/proto/v4/boost/wave/util/macro_helpers.hpp | 8
   branches/proto/v4/libs/asio/doc/design/implementation.qbk | 46
   branches/proto/v4/libs/asio/doc/quickref.xml | 23
   branches/proto/v4/libs/asio/doc/reference.dox | 3
   branches/proto/v4/libs/asio/doc/reference.qbk | 15701 +++++++++++++++++++++++++++++++--------
   branches/proto/v4/libs/asio/doc/reference.xsl | 108
   branches/proto/v4/libs/bind/test/Jamfile.v2 | 1
   branches/proto/v4/libs/config/doc/guidelines.qbk | 2
   branches/proto/v4/libs/config/doc/html/boost_config/boost_macro_reference.html | 35
   branches/proto/v4/libs/config/doc/html/boost_config/guidelines_for_boost_authors.html | 6
   branches/proto/v4/libs/config/doc/html/index.html | 6
   branches/proto/v4/libs/config/doc/macro_reference.qbk | 7
   branches/proto/v4/libs/config/test/all/Jamfile.v2 | 8
   branches/proto/v4/libs/config/test/config_info.cpp | 6
   branches/proto/v4/libs/config/test/config_test.cpp | 22
   branches/proto/v4/libs/exception/test/Jamfile.v2 | 7
   branches/proto/v4/libs/filesystem/test/convenience_test.cpp | 2
   branches/proto/v4/libs/filesystem/test/fstream_test.cpp | 3
   branches/proto/v4/libs/filesystem/test/operations_test.cpp | 4
   branches/proto/v4/libs/filesystem/test/wide_test.cpp | 3
   branches/proto/v4/libs/graph/doc/history.html | 6
   branches/proto/v4/libs/graph/doc/table_of_contents.html | 1
   branches/proto/v4/libs/graph/test/Jamfile.v2 | 2
   branches/proto/v4/libs/math/doc/sf_and_dist/credits.qbk | 7
   branches/proto/v4/libs/math/doc/sf_and_dist/erf.qbk | 29
   branches/proto/v4/libs/math/doc/sf_and_dist/fpclassify.qbk | 31
   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 | 30
   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/main_overview/history1.html | 2
   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 | 30
   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.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/fpclass.html | 42
   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/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_erf/error_function.html | 41
   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_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/status/compilers.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/credits.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/history1.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/issues.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit.html | 2
   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/roadmap.qbk | 2
   branches/proto/v4/libs/spirit/test/karma/actions.cpp | 4
   branches/proto/v4/libs/spirit/test/karma/alternative.cpp | 1
   branches/proto/v4/libs/spirit/test/karma/binary.cpp | 1
   branches/proto/v4/libs/spirit/test/karma/case_handling.cpp | 1
   branches/proto/v4/libs/spirit/test/karma/center_alignment.cpp | 7
   branches/proto/v4/libs/spirit/test/karma/char.cpp | 1
   branches/proto/v4/libs/spirit/test/karma/delimiter.cpp | 1
   branches/proto/v4/libs/spirit/test/karma/eps.cpp | 1
   branches/proto/v4/libs/spirit/test/karma/format_manip.cpp | 1
   branches/proto/v4/libs/spirit/test/karma/functor.cpp | 2
   branches/proto/v4/libs/spirit/test/karma/grammar.cpp | 1
   branches/proto/v4/libs/spirit/test/karma/grammar_fail.cpp | 1
   branches/proto/v4/libs/spirit/test/karma/int_numerics.cpp | 3
   branches/proto/v4/libs/spirit/test/karma/kleene.cpp | 1
   branches/proto/v4/libs/spirit/test/karma/lazy.cpp | 1
   branches/proto/v4/libs/spirit/test/karma/left_alignment.cpp | 1
   branches/proto/v4/libs/spirit/test/karma/list.cpp | 6
   branches/proto/v4/libs/spirit/test/karma/lit.cpp | 1
   branches/proto/v4/libs/spirit/test/karma/none.cpp | 1
   branches/proto/v4/libs/spirit/test/karma/optional.cpp | 1
   branches/proto/v4/libs/spirit/test/karma/pattern.cpp | 1
   branches/proto/v4/libs/spirit/test/karma/real_numerics.cpp | 3
   branches/proto/v4/libs/spirit/test/karma/right_alignment.cpp | 1
   branches/proto/v4/libs/spirit/test/karma/rule_fail.cpp | 1
   branches/proto/v4/libs/spirit/test/karma/sequence.cpp | 1
   branches/proto/v4/tools/build/v2/contrib/boost.jam | 2
   145 files changed, 13136 insertions(+), 4027 deletions(-)

Modified: branches/proto/v4/boost/asio/detail/win_iocp_socket_service.hpp
==============================================================================
--- branches/proto/v4/boost/asio/detail/win_iocp_socket_service.hpp (original)
+++ branches/proto/v4/boost/asio/detail/win_iocp_socket_service.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -1768,7 +1768,6 @@
 
     for (;;)
     {
- boost::system::error_code ec;
       socket_holder new_socket;
       std::size_t addr_len = 0;
       if (peer_endpoint)

Modified: branches/proto/v4/boost/config/compiler/vacpp.hpp
==============================================================================
--- branches/proto/v4/boost/config/compiler/vacpp.hpp (original)
+++ branches/proto/v4/boost/config/compiler/vacpp.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -53,7 +53,7 @@
 #endif
 
 // Some versions of the compiler have issues with default arguments on partial specializations
-#define BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS
+#define BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
 
 
 

Modified: branches/proto/v4/boost/config/suffix.hpp
==============================================================================
--- branches/proto/v4/boost/config/suffix.hpp (original)
+++ branches/proto/v4/boost/config/suffix.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -121,6 +121,15 @@
 # endif
 
 //
+// Without partial specialization, partial
+// specialization with default args won't work either:
+//
+# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ && !defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+# define BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
+# endif
+
+//
 // Without member template support, we can't have template constructors
 // in the standard library either:
 //

Modified: branches/proto/v4/boost/detail/shared_count.hpp
==============================================================================
--- branches/proto/v4/boost/detail/shared_count.hpp (original)
+++ branches/proto/v4/boost/detail/shared_count.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -324,9 +324,13 @@
     weak_count & operator= (shared_count const & r) // nothrow
     {
         sp_counted_base * tmp = r.pi_;
- if(tmp != 0) tmp->weak_add_ref();
- if(pi_ != 0) pi_->weak_release();
- pi_ = tmp;
+
+ if( tmp != pi_ )
+ {
+ if(tmp != 0) tmp->weak_add_ref();
+ if(pi_ != 0) pi_->weak_release();
+ pi_ = tmp;
+ }
 
         return *this;
     }
@@ -334,9 +338,13 @@
     weak_count & operator= (weak_count const & r) // nothrow
     {
         sp_counted_base * tmp = r.pi_;
- if(tmp != 0) tmp->weak_add_ref();
- if(pi_ != 0) pi_->weak_release();
- pi_ = tmp;
+
+ if( tmp != pi_ )
+ {
+ if(tmp != 0) tmp->weak_add_ref();
+ if(pi_ != 0) pi_->weak_release();
+ pi_ = tmp;
+ }
 
         return *this;
     }

Modified: branches/proto/v4/boost/exception/enable_error_info.hpp
==============================================================================
--- branches/proto/v4/boost/exception/enable_error_info.hpp (original)
+++ branches/proto/v4/boost/exception/enable_error_info.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -25,6 +25,10 @@
                 T(x)
                 {
                 }
+
+ ~error_info_injector() throw()
+ {
+ }
             };
 
         struct large_size { char c[256]; };

Modified: branches/proto/v4/boost/exception_ptr.hpp
==============================================================================
--- branches/proto/v4/boost/exception_ptr.hpp (original)
+++ branches/proto/v4/boost/exception_ptr.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -30,6 +30,10 @@
             boost::exception(e)
             {
             }
+
+ ~unknown_exception() throw()
+ {
+ }
         };
 
     typedef intrusive_ptr<exception_detail::clone_base const> exception_ptr;
@@ -56,6 +60,10 @@
                 boost::exception(e2)
                 {
                 }
+
+ ~current_exception_std_exception_wrapper() throw()
+ {
+ }
             };
 
         template <class T>

Modified: branches/proto/v4/boost/fusion/adapted/array/detail/category_of_impl.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/adapted/array/detail/category_of_impl.hpp (original)
+++ branches/proto/v4/boost/fusion/adapted/array/detail/category_of_impl.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -8,7 +8,7 @@
 #if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_27122005_1044)
 #define BOOST_FUSION_CATEGORY_OF_IMPL_27122005_1044
 
-#include <utility>
+#include <boost/config/no_tr1/utility.hpp>
 
 namespace boost { namespace fusion {
 

Modified: branches/proto/v4/boost/fusion/adapted/array/tag_of.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/adapted/array/tag_of.hpp (original)
+++ branches/proto/v4/boost/fusion/adapted/array/tag_of.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -25,7 +25,7 @@
     namespace traits
     {
         template<typename T, std::size_t N>
-#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS)
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
         struct tag_of<boost::array<T,N>, void >
 #else
         struct tag_of<boost::array<T,N> >

Modified: branches/proto/v4/boost/fusion/adapted/boost_tuple/tag_of.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/adapted/boost_tuple/tag_of.hpp (original)
+++ branches/proto/v4/boost/fusion/adapted/boost_tuple/tag_of.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -33,7 +33,7 @@
             class T0, class T1, class T2, class T3, class T4,
             class T5, class T6, class T7, class T8, class T9
>
-#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS)
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
         struct tag_of<tuples::tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>, void >
 #else
         struct tag_of<tuples::tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> >
@@ -43,7 +43,7 @@
         };
 
         template <class Head, class Tail>
-#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS)
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
         struct tag_of<tuples::cons<Head, Tail>, void >
 #else
         struct tag_of<tuples::cons<Head, Tail> >

Modified: branches/proto/v4/boost/fusion/adapted/std_pair.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/adapted/std_pair.hpp (original)
+++ branches/proto/v4/boost/fusion/adapted/std_pair.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -11,7 +11,7 @@
 #include <boost/fusion/support/tag_of_fwd.hpp>
 #include <boost/fusion/adapted/struct.hpp>
 #include <boost/mpl/int.hpp>
-#include <utility>
+#include <boost/config/no_tr1/utility.hpp>
 
 namespace boost { namespace fusion
 {
@@ -20,7 +20,7 @@
     namespace traits
     {
         template <typename T1, typename T2>
-#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS)
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
         struct tag_of<std::pair<T1, T2>, void >
 #else
         struct tag_of<std::pair<T1, T2> >

Modified: branches/proto/v4/boost/fusion/adapted/std_pair/detail/category_of_impl.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/adapted/std_pair/detail/category_of_impl.hpp (original)
+++ branches/proto/v4/boost/fusion/adapted/std_pair/detail/category_of_impl.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -8,7 +8,7 @@
 #if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731)
 #define BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731
 
-#include <utility>
+#include <boost/config/no_tr1/utility.hpp>
 
 namespace boost { namespace fusion {
 

Modified: branches/proto/v4/boost/fusion/adapted/std_pair/std_pair_iterator.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/adapted/std_pair/std_pair_iterator.hpp (original)
+++ branches/proto/v4/boost/fusion/adapted/std_pair/std_pair_iterator.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -14,7 +14,7 @@
 #include <boost/mpl/if.hpp>
 #include <boost/mpl/int.hpp>
 #include <boost/mpl/minus.hpp>
-#include <utility>
+#include <boost/config/no_tr1/utility.hpp>
 
 namespace boost { namespace fusion
 {

Modified: branches/proto/v4/boost/fusion/adapted/std_pair/tag_of.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/adapted/std_pair/tag_of.hpp (original)
+++ branches/proto/v4/boost/fusion/adapted/std_pair/tag_of.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -10,7 +10,7 @@
 
 #include <boost/fusion/support/tag_of_fwd.hpp>
 
-#include <utility>
+#include <boost/config/no_tr1/utility.hpp>
 
 namespace boost { namespace fusion {
 

Modified: branches/proto/v4/boost/fusion/adapted/struct/adapt_assoc_struct.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/adapted/struct/adapt_assoc_struct.hpp (original)
+++ branches/proto/v4/boost/fusion/adapted/struct/adapt_assoc_struct.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -31,7 +31,7 @@
 #include <boost/preprocessor/repetition/enum_params.hpp>
 #include <boost/preprocessor/cat.hpp>
 #include <boost/mpl/int.hpp>
-#include <utility>
+#include <boost/config/no_tr1/utility.hpp>
 
 namespace boost { namespace fusion { namespace extension {
     template<typename Struct, typename Key>

Modified: branches/proto/v4/boost/fusion/adapted/struct/adapt_struct.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/adapted/struct/adapt_struct.hpp (original)
+++ branches/proto/v4/boost/fusion/adapted/struct/adapt_struct.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -27,7 +27,7 @@
 #include <boost/preprocessor/repetition/enum_params.hpp>
 #include <boost/preprocessor/cat.hpp>
 #include <boost/mpl/int.hpp>
-#include <utility>
+#include <boost/config/no_tr1/utility.hpp>
 
 #define BOOST_FUSION_ADAPT_STRUCT(name, bseq) \
     BOOST_FUSION_ADAPT_STRUCT_I( \

Modified: branches/proto/v4/boost/fusion/adapted/struct/detail/category_of_impl.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/adapted/struct/detail/category_of_impl.hpp (original)
+++ branches/proto/v4/boost/fusion/adapted/struct/detail/category_of_impl.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -8,7 +8,7 @@
 #if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731)
 #define BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731
 
-#include <utility>
+#include <boost/config/no_tr1/utility.hpp>
 
 namespace boost { namespace fusion
 {

Modified: branches/proto/v4/boost/fusion/adapted/struct/struct_iterator.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/adapted/struct/struct_iterator.hpp (original)
+++ branches/proto/v4/boost/fusion/adapted/struct/struct_iterator.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -17,7 +17,7 @@
 #include <boost/mpl/if.hpp>
 #include <boost/mpl/int.hpp>
 #include <boost/mpl/minus.hpp>
-#include <utility>
+#include <boost/config/no_tr1/utility.hpp>
 
 namespace boost { namespace fusion
 {

Modified: branches/proto/v4/boost/fusion/algorithm/transformation/transform.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/algorithm/transformation/transform.hpp (original)
+++ branches/proto/v4/boost/fusion/algorithm/transformation/transform.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -22,7 +22,7 @@
         };
 
         template <typename Sequence, typename F>
-#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS)
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
         struct transform<Sequence, F, void_>
 #else
         struct transform<Sequence, F>

Modified: branches/proto/v4/boost/fusion/algorithm/transformation/zip.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/algorithm/transformation/zip.hpp (original)
+++ branches/proto/v4/boost/fusion/algorithm/transformation/zip.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -54,7 +54,7 @@
     namespace result_of
     {
         template< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, typename T) >
-#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS)
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
         #define TEXT(z, n, text) , text
         struct zip< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(ZIP_ITERATION), FUSION_MAX_ZIP_SEQUENCES, TEXT, void_) >
         #undef TEXT

Modified: branches/proto/v4/boost/fusion/container/generation/deque_tie.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/container/generation/deque_tie.hpp (original)
+++ branches/proto/v4/boost/fusion/container/generation/deque_tie.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -54,7 +54,7 @@
     namespace result_of
     {
         template <BOOST_PP_ENUM_PARAMS(N, typename T)>
-#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS)
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
         #define TEXT(z, n, text) , text
         struct deque_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) >
         #undef TEXT

Modified: branches/proto/v4/boost/fusion/container/generation/list_tie.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/container/generation/list_tie.hpp (original)
+++ branches/proto/v4/boost/fusion/container/generation/list_tie.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -54,7 +54,7 @@
     namespace result_of
     {
         template <BOOST_PP_ENUM_PARAMS(N, typename T)>
-#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS)
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
         #define TEXT(z, n, text) , text
         struct list_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_LIST_SIZE, TEXT, void_) >
         #undef TEXT

Modified: branches/proto/v4/boost/fusion/container/generation/make_deque.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/container/generation/make_deque.hpp (original)
+++ branches/proto/v4/boost/fusion/container/generation/make_deque.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -73,7 +73,7 @@
     namespace result_of
     {
         template <BOOST_PP_ENUM_PARAMS(N, typename T)>
-#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS)
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
         #define TEXT(z, n, text) , text
         struct make_deque< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) >
         #undef TEXT

Modified: branches/proto/v4/boost/fusion/container/generation/make_list.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/container/generation/make_list.hpp (original)
+++ branches/proto/v4/boost/fusion/container/generation/make_list.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -66,7 +66,7 @@
     namespace result_of
     {
         template <BOOST_PP_ENUM_PARAMS(N, typename T)>
-#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS)
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
         #define TEXT(z, n, text) , text
         struct make_list< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_LIST_SIZE, TEXT, void_) >
         #undef TEXT

Modified: branches/proto/v4/boost/fusion/container/generation/make_map.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/container/generation/make_map.hpp (original)
+++ branches/proto/v4/boost/fusion/container/generation/make_map.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -78,7 +78,7 @@
             BOOST_PP_ENUM_PARAMS(N, typename K)
           , BOOST_PP_ENUM_PARAMS(N, typename D)
>
-#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS)
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
          #define TEXT(z, n, text) , text
          struct make_map<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D) BOOST_PP_REPEAT_FROM_TO(N, FUSION_MAX_VECTOR_SIZE, TEXT, void_) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_)>
          #undef TEXT

Modified: branches/proto/v4/boost/fusion/container/generation/make_set.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/container/generation/make_set.hpp (original)
+++ branches/proto/v4/boost/fusion/container/generation/make_set.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -68,7 +68,7 @@
     namespace result_of
     {
         template <BOOST_PP_ENUM_PARAMS(N, typename T)>
-#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS)
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
         #define TEXT(z, n, text) , text
         struct make_set< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_SET_SIZE, TEXT, void_) >
         #undef TEXT

Modified: branches/proto/v4/boost/fusion/container/generation/make_vector.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/container/generation/make_vector.hpp (original)
+++ branches/proto/v4/boost/fusion/container/generation/make_vector.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -66,7 +66,7 @@
     namespace result_of
     {
         template <BOOST_PP_ENUM_PARAMS(N, typename T)>
-#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS)
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
         #define TEXT(z, n, text) , text
         struct make_vector< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_) >
         #undef TEXT

Modified: branches/proto/v4/boost/fusion/container/generation/map_tie.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/container/generation/map_tie.hpp (original)
+++ branches/proto/v4/boost/fusion/container/generation/map_tie.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -81,7 +81,7 @@
             BOOST_PP_ENUM_PARAMS(N, typename K)
           , BOOST_PP_ENUM_PARAMS(N, typename D)
>
-#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS)
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
         #define TEXT(z, n, text) , text
 
         struct map_tie<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D) BOOST_PP_REPEAT_FROM_TO(N, FUSION_MAX_MAP_SIZE, TEXT, void_) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_MAP_SIZE, TEXT, void_)>

Modified: branches/proto/v4/boost/fusion/container/generation/vector_tie.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/container/generation/vector_tie.hpp (original)
+++ branches/proto/v4/boost/fusion/container/generation/vector_tie.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -53,7 +53,7 @@
     namespace result_of
     {
         template <BOOST_PP_ENUM_PARAMS(N, typename T)>
-#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS)
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
         #define TEXT(z, n, text) , text
         struct vector_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_) >
         #undef TEXT

Modified: branches/proto/v4/boost/fusion/support/tag_of.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/support/tag_of.hpp (original)
+++ branches/proto/v4/boost/fusion/support/tag_of.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -16,7 +16,7 @@
 #include <boost/mpl/assert.hpp>
 #include <boost/mpl/bool.hpp>
 #include <boost/mpl/if.hpp>
-#include <utility>
+#include <boost/config/no_tr1/utility.hpp>
 
 namespace boost
 {

Modified: branches/proto/v4/boost/fusion/view/transform_view/transform_view.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/view/transform_view/transform_view.hpp (original)
+++ branches/proto/v4/boost/fusion/view/transform_view/transform_view.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -73,7 +73,7 @@
 
     // Unary Version
     template <typename Sequence, typename F>
-#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS)
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
     struct transform_view<Sequence, F, void_> : sequence_base<transform_view<Sequence, F, void_> >
 #else
     struct transform_view<Sequence, F> : sequence_base<transform_view<Sequence, F> >

Modified: branches/proto/v4/boost/memory_order.hpp
==============================================================================
--- branches/proto/v4/boost/memory_order.hpp (original)
+++ branches/proto/v4/boost/memory_order.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -27,7 +27,7 @@
     memory_order_acquire = 1,
     memory_order_release = 2,
     memory_order_acq_rel = 3, // acquire | release
- memory_order_seq_cst = 7, // acq_rel | 4
+ memory_order_seq_cst = 7 // acq_rel | 4
 };
 
 } // namespace boost

Modified: branches/proto/v4/boost/shared_ptr.hpp
==============================================================================
--- branches/proto/v4/boost/shared_ptr.hpp (original)
+++ branches/proto/v4/boost/shared_ptr.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -634,7 +634,7 @@
 
 #if !defined(BOOST_NO_IOSTREAM)
 
-#if defined(__GNUC__) && (__GNUC__ < 3)
+#if defined(BOOST_NO_TEMPLATED_IOSTREAMS) || ( defined(__GNUC__) && (__GNUC__ < 3) )
 
 template<class Y> std::ostream & operator<< (std::ostream & os, shared_ptr<Y> const & p)
 {

Modified: branches/proto/v4/boost/spirit/home/support/iterators/detail/combine_policies.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/support/iterators/detail/combine_policies.hpp (original)
+++ branches/proto/v4/boost/spirit/home/support/iterators/detail/combine_policies.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -414,8 +414,7 @@
     // multi_pass template, combining 4 separate policies into one. Any other
     // multi_pass policy class needs to follow the scheme as shown below.
     template<
- typename Ownership, typename Checking, typename Input,
- typename Storage
+ typename Ownership, typename Checking, typename Input, typename Storage
>
     struct default_policy
     {

Modified: branches/proto/v4/boost/thread/win32/condition_variable.hpp
==============================================================================
--- branches/proto/v4/boost/thread/win32/condition_variable.hpp (original)
+++ branches/proto/v4/boost/thread/win32/condition_variable.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -14,6 +14,8 @@
 #include <boost/thread/thread_time.hpp>
 #include "interlocked_read.hpp"
 #include <boost/thread/xtime.hpp>
+#include <vector>
+#include <boost/intrusive_ptr.hpp>
 
 namespace boost
 {
@@ -27,79 +29,50 @@
 
             struct list_entry
             {
- detail::win32::handle semaphore;
- long count;
+ detail::win32::handle_manager semaphore;
+ detail::win32::handle_manager wake_sem;
+ long waiters;
                 bool notified;
+ long references;
 
                 list_entry():
- semaphore(0),count(0),notified(0)
+ semaphore(detail::win32::create_anonymous_semaphore(0,LONG_MAX)),
+ wake_sem(0),
+ waiters(1),notified(false),references(0)
                 {}
 
- void release(unsigned count_to_release=1)
+ void release(unsigned count_to_release)
                 {
+ notified=true;
                     detail::win32::ReleaseSemaphore(semaphore,count_to_release,0);
                 }
-
- };
-
- BOOST_STATIC_CONSTANT(unsigned,generation_count=3);
-
- list_entry generations[generation_count];
- detail::win32::handle wake_sem;
-
- void wake_waiters(long count_to_wake)
- {
- detail::interlocked_write_release(&total_count,total_count-count_to_wake);
- detail::win32::ReleaseSemaphore(wake_sem,count_to_wake,0);
- }
-
 
- static bool no_waiters(list_entry const& entry)
- {
- return entry.count==0;
- }
-
- void shift_generations_down()
- {
- list_entry* const last_active_entry=std::remove_if(generations,generations+generation_count,no_waiters);
- if(last_active_entry==generations+generation_count)
+ friend void intrusive_ptr_add_ref(list_entry * p)
                 {
- broadcast_entry(generations[generation_count-1]);
+ BOOST_INTERLOCKED_INCREMENT(&p->references);
                 }
- else
+
+ friend void intrusive_ptr_release(list_entry * p)
                 {
- active_generation_count=unsigned(last_active_entry-generations)+1;
+ if(!BOOST_INTERLOCKED_DECREMENT(&p->references))
+ {
+ delete p;
+ }
                 }
+ };
 
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4996)
-#endif
- std::copy_backward(generations,generations+active_generation_count-1,generations+active_generation_count);
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
- generations[0]=list_entry();
- }
+ typedef boost::intrusive_ptr<list_entry> entry_ptr;
+ typedef std::vector<entry_ptr> generation_list;
 
- void broadcast_entry(list_entry& entry)
- {
- entry.release(entry.count);
- entry.count=0;
- dispose_entry(entry);
- }
-
+ generation_list generations;
+ detail::win32::handle_manager wake_sem;
 
- void dispose_entry(list_entry& entry)
+ void wake_waiters(long count_to_wake)
             {
- if(entry.semaphore)
- {
- BOOST_VERIFY(detail::win32::CloseHandle(entry.semaphore));
- entry.semaphore=0;
- }
- entry.notified=false;
+ detail::interlocked_write_release(&total_count,total_count-count_to_wake);
+ detail::win32::ReleaseSemaphore(wake_sem,count_to_wake,0);
             }
-
+
             template<typename lock_type>
             struct relocker
             {
@@ -123,77 +96,79 @@
                     
                 }
             private:
+ relocker(relocker&);
                 void operator=(relocker&);
             };
             
 
- template<typename lock_type>
- void start_wait_loop_first_time(relocker<lock_type>& locker,
- detail::win32::handle_manager& local_wake_sem)
+ entry_ptr get_wait_entry()
             {
- detail::interlocked_write_release(&total_count,total_count+1);
- locker.unlock();
+ boost::lock_guard<boost::mutex> internal_lock(internal_mutex);
+
                 if(!wake_sem)
                 {
                     wake_sem=detail::win32::create_anonymous_semaphore(0,LONG_MAX);
                     BOOST_ASSERT(wake_sem);
                 }
- local_wake_sem=detail::win32::duplicate_handle(wake_sem);
-
- if(generations[0].notified)
+
+ detail::interlocked_write_release(&total_count,total_count+1);
+ if(generations.empty() || generations.back()->notified)
                 {
- shift_generations_down();
+ entry_ptr new_entry(new list_entry);
+ new_entry->wake_sem=wake_sem.duplicate();
+ generations.push_back(new_entry);
+ return new_entry;
                 }
- else if(!active_generation_count)
+ else
                 {
- active_generation_count=1;
+ BOOST_INTERLOCKED_INCREMENT(&generations.back()->waiters);
+ return generations.back();
                 }
             }
-
- void ensure_generation_present()
+
+ struct entry_manager
             {
- if(!generations[0].semaphore)
+ entry_ptr const entry;
+
+ entry_manager(entry_ptr const& entry_):
+ entry(entry_)
+ {}
+
+ ~entry_manager()
                 {
- generations[0].semaphore=detail::win32::create_anonymous_semaphore(0,LONG_MAX);
- BOOST_ASSERT(generations[0].semaphore);
+ BOOST_INTERLOCKED_DECREMENT(&entry->waiters);
                 }
- }
-
- template<typename lock_type>
- void start_wait_loop(relocker<lock_type>& locker,
- detail::win32::handle_manager& local_wake_sem,
- detail::win32::handle_manager& sem)
- {
- boost::mutex::scoped_lock internal_lock(internal_mutex);
- if(!local_wake_sem)
+
+ list_entry* operator->()
                 {
- start_wait_loop_first_time(locker,local_wake_sem);
+ return entry.get();
                 }
- ensure_generation_present();
- ++generations[0].count;
- sem=detail::win32::duplicate_handle(generations[0].semaphore);
- }
+
+ private:
+ void operator=(entry_manager&);
+ entry_manager(entry_manager&);
+ };
+
 
         protected:
             template<typename lock_type>
             bool do_wait(lock_type& lock,timeout wait_until)
             {
- detail::win32::handle_manager local_wake_sem;
- detail::win32::handle_manager sem;
- bool woken=false;
-
                 relocker<lock_type> locker(lock);
-
+
+ entry_manager entry=get_wait_entry();
+
+ locker.unlock();
+
+ bool woken=false;
                 while(!woken)
                 {
- start_wait_loop(locker,local_wake_sem,sem);
-
- if(!this_thread::interruptible_wait(sem,wait_until))
+ if(!this_thread::interruptible_wait(entry->semaphore,wait_until))
                     {
                         return false;
                     }
                 
- unsigned long const woken_result=detail::win32::WaitForSingleObject(local_wake_sem,0);
+ unsigned long const woken_result=detail::win32::WaitForSingleObject(entry->wake_sem,0);
                     BOOST_ASSERT(woken_result==detail::win32::timeout || woken_result==0);
 
                     woken=(woken_result==0);
@@ -214,21 +189,19 @@
         
             basic_condition_variable(const basic_condition_variable& other);
             basic_condition_variable& operator=(const basic_condition_variable& other);
+
+ static bool no_waiters(entry_ptr const& entry)
+ {
+ return !detail::interlocked_read_acquire(&entry->waiters);
+ }
         public:
             basic_condition_variable():
                 total_count(0),active_generation_count(0),wake_sem(0)
             {}
             
             ~basic_condition_variable()
- {
- for(unsigned i=0;i<generation_count;++i)
- {
- dispose_entry(generations[i]);
- }
- detail::win32::CloseHandle(wake_sem);
- }
+ {}
 
-
             void notify_one()
             {
                 if(detail::interlocked_read_acquire(&total_count))
@@ -239,33 +212,14 @@
                         return;
                     }
                     wake_waiters(1);
-
- unsigned waiting_count=0;
-
- for(unsigned generation=active_generation_count;generation!=0;--generation)
- {
- list_entry& entry=generations[generation-1];
- waiting_count+=entry.count;
- if(entry.count)
- {
- entry.notified=true;
- entry.release();
- if(!--entry.count)
- {
- dispose_entry(entry);
- if(generation==active_generation_count)
- {
- --active_generation_count;
- }
- }
- }
- }
- if(waiting_count<=total_count)
+
+ for(generation_list::iterator it=generations.begin(),
+ end=generations.end();
+ it!=end;++it)
                     {
- shift_generations_down();
- ensure_generation_present();
- generations[0].release();
+ (*it)->release(1);
                     }
+ generations.erase(std::remove_if(generations.begin(),generations.end(),no_waiters),generations.end());
                 }
             }
         
@@ -274,24 +228,18 @@
                 if(detail::interlocked_read_acquire(&total_count))
                 {
                     boost::mutex::scoped_lock internal_lock(internal_mutex);
- long waiting_count=total_count;
-
- wake_waiters(total_count);
- for(unsigned generation=active_generation_count;generation!=0;--generation)
+ if(!total_count)
                     {
- list_entry& entry=generations[generation-1];
- if(entry.count)
- {
- waiting_count-=entry.count;
- broadcast_entry(entry);
- }
+ return;
                     }
- if(waiting_count)
+ wake_waiters(total_count);
+ for(generation_list::iterator it=generations.begin(),
+ end=generations.end();
+ it!=end;++it)
                     {
- ensure_generation_present();
- generations[0].release(waiting_count);
+ (*it)->release(detail::interlocked_read_acquire(&(*it)->waiters));
                     }
- active_generation_count=0;
+ wake_sem=detail::win32::handle(0);
                 }
             }
         

Modified: branches/proto/v4/boost/thread/win32/thread.hpp
==============================================================================
--- branches/proto/v4/boost/thread/win32/thread.hpp (original)
+++ branches/proto/v4/boost/thread/win32/thread.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -185,6 +185,9 @@
             {
                 f();
             }
+ private:
+ void operator=(thread_data&);
+ thread_data(thread_data&);
         };
         
         mutable boost::mutex thread_info_mutex;

Modified: branches/proto/v4/boost/unordered/detail/hash_table.hpp
==============================================================================
--- branches/proto/v4/boost/unordered/detail/hash_table.hpp (original)
+++ branches/proto/v4/boost/unordered/detail/hash_table.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -50,7 +50,6 @@
 
         static const std::size_t default_initial_bucket_count = 50;
         static const float minimum_max_load_factor = 1e-3f;
- inline std::size_t next_prime(std::size_t n);
 
         template <class T>
         inline void hash_swap(T& x, T& y)
@@ -101,6 +100,32 @@
                 bound--;
             return *bound;
         }
+
+ // Controls how many buckets are allocated and which buckets hash
+ // values map to. Does not contain the buckets themselves, or ever
+ // deal with them directly.
+
+ struct bucket_manager {
+ std::size_t bucket_count_;
+
+ bucket_manager()
+ : bucket_count_(0) {}
+
+ explicit bucket_manager(std::size_t n)
+ : bucket_count_(next_prime(n)) {}
+
+ std::size_t bucket_count() const {
+ return bucket_count_;
+ }
+
+ std::size_t bucket_from_hash(std::size_t hashed) const {
+ return hashed % bucket_count_;
+ }
+
+ std::size_t max_bucket_count(std::size_t max_size) const {
+ return prev_prime(max_size);
+ }
+ };
 
         // pair_cast - used to convert between pair types.
 

Modified: branches/proto/v4/boost/unordered/detail/hash_table_impl.hpp
==============================================================================
--- branches/proto/v4/boost/unordered/detail/hash_table_impl.hpp (original)
+++ branches/proto/v4/boost/unordered/detail/hash_table_impl.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -312,15 +312,15 @@
 
             allocators allocators_;
             bucket_ptr buckets_;
- size_type bucket_count_;
+ bucket_manager bucket_manager_;
             bucket_ptr cached_begin_bucket_;
- size_type size_;
+ size_type size_;
 
             // Constructors/Deconstructor
 
             BOOST_UNORDERED_TABLE_DATA(size_type n, value_allocator const& a)
               : allocators_(a),
- buckets_(), bucket_count_(next_prime(n)),
+ buckets_(), bucket_manager_(n),
                 cached_begin_bucket_(), size_(0)
             {
                 BOOST_UNORDERED_MSVC_RESET_PTR(buckets_);
@@ -329,7 +329,7 @@
 
             BOOST_UNORDERED_TABLE_DATA(BOOST_UNORDERED_TABLE_DATA const& x, size_type n)
               : allocators_(x.allocators_),
- buckets_(), bucket_count_(next_prime(n)),
+ buckets_(), bucket_manager_(n),
                 cached_begin_bucket_(), size_(0)
             {
                 BOOST_UNORDERED_MSVC_RESET_PTR(buckets_);
@@ -338,7 +338,7 @@
 
             BOOST_UNORDERED_TABLE_DATA(BOOST_UNORDERED_TABLE_DATA& x, move_tag)
                 : allocators_(x.allocators_),
- buckets_(x.buckets_), bucket_count_(x.bucket_count_),
+ buckets_(x.buckets_), bucket_manager_(x.bucket_manager_),
                 cached_begin_bucket_(x.cached_begin_bucket_), size_(x.size_)
             {
                 unordered_detail::reset(x.buckets_);
@@ -346,19 +346,19 @@
 
             BOOST_UNORDERED_TABLE_DATA(BOOST_UNORDERED_TABLE_DATA& x,
                     value_allocator const& a, size_type n, move_tag)
- : allocators_(a), buckets_(), bucket_count_(),
+ : allocators_(a), buckets_(), bucket_manager_(),
                 cached_begin_bucket_(), size_(0)
             {
                 if(allocators_ == x.allocators_) {
                     buckets_ = x.buckets_;
- bucket_count_ = x.bucket_count_;
+ bucket_manager_ = x.bucket_manager_;
                     cached_begin_bucket_ = x.cached_begin_bucket_;
                     size_ = x.size_;
                     unordered_detail::reset(x.buckets_);
                 }
                 else {
                     BOOST_UNORDERED_MSVC_RESET_PTR(buckets_);
- bucket_count_ = next_prime(n);
+ bucket_manager_ = bucket_manager(n);
                     create_buckets();
                 }
             }
@@ -370,15 +370,17 @@
             }
 
             void create_buckets() {
+ size_type bucket_count = bucket_manager_.bucket_count();
+
                 // The array constructor will clean up in the event of an
                 // exception.
                 allocator_array_constructor<bucket_allocator>
                     constructor(allocators_.bucket_alloc_);
 
                 // Creates an extra bucket to act as a sentinel.
- constructor.construct(bucket(), bucket_count_ + 1);
+ constructor.construct(bucket(), bucket_count + 1);
 
- cached_begin_bucket_ = constructor.get() + static_cast<difference_type>(bucket_count_);
+ cached_begin_bucket_ = constructor.get() + static_cast<difference_type>(bucket_count);
 
                 // Set up the sentinel.
                 cached_begin_bucket_->next_ = link_ptr(cached_begin_bucket_);
@@ -404,7 +406,8 @@
                     for(begin = buckets_; begin != end; ++begin)
                         allocators_.bucket_alloc_.destroy(begin);
 
- allocators_.bucket_alloc_.deallocate(buckets_, bucket_count_ + 1);
+ allocators_.bucket_alloc_.deallocate(buckets_,
+ bucket_manager_.bucket_count() + 1);
                 }
             }
 
@@ -419,7 +422,7 @@
             void swap(BOOST_UNORDERED_TABLE_DATA& other)
             {
                 std::swap(buckets_, other.buckets_);
- std::swap(bucket_count_, other.bucket_count_);
+ std::swap(bucket_manager_, other.bucket_manager_);
                 std::swap(cached_begin_bucket_, other.cached_begin_bucket_);
                 std::swap(size_, other.size_);
             }
@@ -430,17 +433,26 @@
                 delete_buckets();
                 buckets_ = other.buckets_;
                 unordered_detail::reset(other.buckets_);
- bucket_count_ = other.bucket_count_;
+ bucket_manager_ = other.bucket_manager_;
                 cached_begin_bucket_ = other.cached_begin_bucket_;
                 size_ = other.size_;
             }
 
+ // Return the bucket number for a hashed value.
+ //
+ // no throw
+ size_type bucket_from_hash(size_type hashed) const
+ {
+ return bucket_manager_.bucket_from_hash(hashed);
+ }
+
             // Return the bucket for a hashed value.
             //
             // no throw
- bucket_ptr bucket_from_hash(size_type hashed) const
+ bucket_ptr bucket_ptr_from_hash(size_type hashed) const
             {
- return buckets_ + static_cast<difference_type>(hashed % bucket_count_);
+ return buckets_ + static_cast<difference_type>(
+ bucket_manager_.bucket_from_hash(hashed));
             }
 
             // Begin & End
@@ -449,7 +461,7 @@
 
             bucket_ptr buckets_end() const
             {
- return buckets_ + static_cast<difference_type>(bucket_count_);
+ return buckets_ + static_cast<difference_type>(bucket_manager_.bucket_count());
             }
 
             iterator_base begin() const
@@ -1282,7 +1294,7 @@
             size_type bucket(key_type const& k) const
             {
                 // hash_function can throw:
- return hash_function()(k) % data_.bucket_count_;
+ return data_.bucket_from_hash(hash_function()(k));
             }
 
 
@@ -1295,7 +1307,7 @@
             // no throw
             size_type bucket_count() const
             {
- return data_.bucket_count_;
+ return data_.bucket_manager_.bucket_count();
             }
 
             // no throw
@@ -1331,7 +1343,7 @@
                 // From 6.3.1/13:
                 // Only resize when size >= mlf_ * count
                 max_load_ = double_to_size_t(ceil(
- (double) mlf_ * data_.bucket_count_));
+ (double) mlf_ * data_.bucket_manager_.bucket_count()));
             }
 
             // basic exception safety
@@ -1383,9 +1395,9 @@
             // no throw
             float load_factor() const
             {
- BOOST_ASSERT(data_.bucket_count_ != 0);
+ BOOST_ASSERT(data_.bucket_manager_.bucket_count() != 0);
                 return static_cast<float>(data_.size_)
- / static_cast<float>(data_.bucket_count_);
+ / static_cast<float>(data_.bucket_manager_.bucket_count());
             }
 
         private:
@@ -1465,7 +1477,7 @@
                         // src_bucket to dst.
 
                         // This next line throws iff the hash function throws.
- bucket_ptr dst_bucket = dst.bucket_from_hash(
+ bucket_ptr dst_bucket = dst.bucket_ptr_from_hash(
                                 hf(extract_key(data::get_value(src_bucket->next_))));
 
                         link_ptr n = src_bucket->next_;
@@ -1491,7 +1503,7 @@
                     for(link_ptr it = src.begin(i);
                             BOOST_UNORDERED_BORLAND_BOOL(it); it = data::next_group(it)) {
                         // hash function can throw.
- bucket_ptr dst_bucket = dst.bucket_from_hash(
+ bucket_ptr dst_bucket = dst.bucket_ptr_from_hash(
                                 hf(extract_key(data::get_value(it))));
                         // throws, strong
                         dst.copy_group(it, dst_bucket);
@@ -1516,7 +1528,7 @@
             {
                 key_type const& k = extract_key(v);
                 size_type hash_value = hash_function()(k);
- bucket_ptr bucket = data_.bucket_from_hash(hash_value);
+ bucket_ptr bucket = data_.bucket_ptr_from_hash(hash_value);
                 link_ptr position = find_iterator(bucket, k);
 
                 // Create the node before rehashing in case it throws an
@@ -1527,7 +1539,7 @@
                 // reserve has basic exception safety if the hash function
                 // throws, strong otherwise.
                 if(reserve(size() + 1))
- bucket = data_.bucket_from_hash(hash_value);
+ bucket = data_.bucket_ptr_from_hash(hash_value);
 
                 // I'm relying on link_ptr not being invalidated by
                 // the rehash here.
@@ -1640,7 +1652,7 @@
                 typedef BOOST_DEDUCED_TYPENAME value_type::second_type mapped_type;
 
                 size_type hash_value = hash_function()(k);
- bucket_ptr bucket = data_.bucket_from_hash(hash_value);
+ bucket_ptr bucket = data_.bucket_ptr_from_hash(hash_value);
                 link_ptr pos = find_iterator(bucket, k);
 
                 if (BOOST_UNORDERED_BORLAND_BOOL(pos))
@@ -1657,7 +1669,7 @@
                     // reserve has basic exception safety if the hash function
                     // throws, strong otherwise.
                     if(reserve(size() + 1))
- bucket = data_.bucket_from_hash(hash_value);
+ bucket = data_.bucket_ptr_from_hash(hash_value);
 
                     // Nothing after this point can throw.
 
@@ -1674,7 +1686,7 @@
                 // No side effects in this initial code
                 key_type const& k = extract_key(v);
                 size_type hash_value = hash_function()(k);
- bucket_ptr bucket = data_.bucket_from_hash(hash_value);
+ bucket_ptr bucket = data_.bucket_ptr_from_hash(hash_value);
                 link_ptr pos = find_iterator(bucket, k);
 
                 if (BOOST_UNORDERED_BORLAND_BOOL(pos)) {
@@ -1694,7 +1706,7 @@
                     // reserve has basic exception safety if the hash function
                     // throws, strong otherwise.
                     if(reserve(size() + 1))
- bucket = data_.bucket_from_hash(hash_value);
+ bucket = data_.bucket_ptr_from_hash(hash_value);
 
                     // Nothing after this point can throw.
 
@@ -1749,7 +1761,7 @@
                 for (; i != j; ++i) {
                     // No side effects in this initial code
                     size_type hash_value = hash_function()(extract_key(*i));
- bucket_ptr bucket = data_.bucket_from_hash(hash_value);
+ bucket_ptr bucket = data_.bucket_ptr_from_hash(hash_value);
                     link_ptr pos = find_iterator(bucket, extract_key(*i));
 
                     if (!BOOST_UNORDERED_BORLAND_BOOL(pos)) {
@@ -1764,7 +1776,7 @@
                         // throws, strong otherwise.
                         if(size() + 1 >= max_load_) {
                             reserve(size() + insert_size(i, j));
- bucket = data_.bucket_from_hash(hash_value);
+ bucket = data_.bucket_ptr_from_hash(hash_value);
                         }
 
                         // Nothing after this point can throw.
@@ -2042,4 +2054,3 @@
 #undef BOOST_UNORDERED_CONST_ITERATOR
 #undef BOOST_UNORDERED_LOCAL_ITERATOR
 #undef BOOST_UNORDERED_CONST_LOCAL_ITERATOR
-

Modified: branches/proto/v4/boost/utility/addressof.hpp
==============================================================================
--- branches/proto/v4/boost/utility/addressof.hpp (original)
+++ branches/proto/v4/boost/utility/addressof.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -1,6 +1,7 @@
 // Copyright (C) 2002 Brad King (brad.king_at_[hidden])
 // Douglas Gregor (gregod_at_[hidden])
-// Peter Dimov
+//
+// Copyright (C) 2002, 2008 Peter Dimov
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at
@@ -14,27 +15,31 @@
 # include <boost/config.hpp>
 # include <boost/detail/workaround.hpp>
 
-namespace boost {
-
-// Do not make addressof() inline. Breaks MSVC 7. (Peter Dimov)
+namespace boost
+{
 
-// VC7 strips const from nested classes unless we add indirection here
-# if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
+namespace detail
+{
 
-template<class T> struct _addp
+template<class T> struct addressof_impl
 {
- typedef T * type;
+ static inline T * f( T & v, long )
+ {
+ return reinterpret_cast<T*>(
+ &const_cast<char&>(reinterpret_cast<const volatile char &>(v)));
+ }
+
+ static inline T * f( T * v, int )
+ {
+ return v;
+ }
 };
-
-template <typename T> typename _addp<T>::type
 
-# else
-template <typename T> T*
-# endif
-addressof(T& v)
+} // namespace detail
+
+template<class T> T * addressof( T & v )
 {
- return reinterpret_cast<T*>(
- &const_cast<char&>(reinterpret_cast<const volatile char &>(v)));
+ return boost::detail::addressof_impl<T>::f( v, 0 );
 }
 
 // Borland doesn't like casting an array reference to a char reference
@@ -53,6 +58,6 @@
 }
 # endif
 
-}
+} // namespace boost
 
 #endif // BOOST_UTILITY_ADDRESSOF_HPP

Modified: branches/proto/v4/boost/wave/util/macro_helpers.hpp
==============================================================================
--- branches/proto/v4/boost/wave/util/macro_helpers.hpp (original)
+++ branches/proto/v4/boost/wave/util/macro_helpers.hpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -260,11 +260,11 @@
     inline boost::wave::token_id
     skip_whitespace(IteratorT &first, IteratorT const &last)
     {
- token_id id = next_token<IteratorT>::peek(first, last, false);
+ token_id id = util::impl::next_token<IteratorT>::peek(first, last, false);
         if (IS_CATEGORY(id, WhiteSpaceTokenType)) {
             do {
                 ++first;
- id = next_token<IteratorT>::peek(first, last, false);
+ id = util::impl::next_token<IteratorT>::peek(first, last, false);
             } while (IS_CATEGORY(id, WhiteSpaceTokenType));
         }
         ++first;
@@ -277,11 +277,11 @@
     {
         queue.push_back (*first); // queue up the current token
         
- token_id id = next_token<IteratorT>::peek(first, last, false);
+ token_id id = util::impl::next_token<IteratorT>::peek(first, last, false);
         if (IS_CATEGORY(id, WhiteSpaceTokenType)) {
             do {
                 queue.push_back(*++first); // queue up the next whitespace
- id = next_token<IteratorT>::peek(first, last, false);
+ id = util::impl::next_token<IteratorT>::peek(first, last, false);
             } while (IS_CATEGORY(id, WhiteSpaceTokenType));
         }
         ++first;

Modified: branches/proto/v4/libs/asio/doc/design/implementation.qbk
==============================================================================
--- branches/proto/v4/libs/asio/doc/design/implementation.qbk (original)
+++ branches/proto/v4/libs/asio/doc/design/implementation.qbk 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -29,6 +29,9 @@
 resolution. This thread is created on the first call to either
 `ip::tcp::resolver::async_resolve()` or `ip::udp::resolver::async_resolve()`.
 
+Scatter-Gather:
+
+* At most `min(64,IOV_MAX)` buffers may be transferred in a single operation.
 
 [heading Linux Kernel 2.6]
 
@@ -46,6 +49,10 @@
 resolution. This thread is created on the first call to either
 `ip::tcp::resolver::async_resolve()` or `ip::udp::resolver::async_resolve()`.
 
+Scatter-Gather:
+
+* At most `min(64,IOV_MAX)` buffers may be transferred in a single operation.
+
 
 [heading Solaris]
 
@@ -63,6 +70,10 @@
 resolution. This thread is created on the first call to either
 `ip::tcp::resolver::async_resolve()` or `ip::udp::resolver::async_resolve()`.
 
+Scatter-Gather:
+
+* At most `min(64,IOV_MAX)` buffers may be transferred in a single operation.
+
 
 [heading QNX Neutrino]
 
@@ -81,6 +92,10 @@
 resolution. This thread is created on the first call to either
 `ip::tcp::resolver::async_resolve()` or `ip::udp::resolver::async_resolve()`.
 
+Scatter-Gather:
+
+* At most `min(64,IOV_MAX)` buffers may be transferred in a single operation.
+
 
 [heading Mac OS X]
 
@@ -98,6 +113,10 @@
 resolution. This thread is created on the first call to either
 `ip::tcp::resolver::async_resolve()` or `ip::udp::resolver::async_resolve()`.
 
+Scatter-Gather:
+
+* At most `min(64,IOV_MAX)` buffers may be transferred in a single operation.
+
 
 [heading FreeBSD]
 
@@ -115,6 +134,10 @@
 resolution. This thread is created on the first call to either
 `ip::tcp::resolver::async_resolve()` or `ip::udp::resolver::async_resolve()`.
 
+Scatter-Gather:
+
+* At most `min(64,IOV_MAX)` buffers may be transferred in a single operation.
+
 
 [heading AIX]
 
@@ -133,6 +156,10 @@
 resolution. This thread is created on the first call to either
 `ip::tcp::resolver::async_resolve()` or `ip::udp::resolver::async_resolve()`.
 
+Scatter-Gather:
+
+* At most `min(64,IOV_MAX)` buffers may be transferred in a single operation.
+
 
 [heading HP-UX]
 
@@ -151,6 +178,10 @@
 resolution. This thread is created on the first call to either
 `ip::tcp::resolver::async_resolve()` or `ip::udp::resolver::async_resolve()`.
 
+Scatter-Gather:
+
+* At most `min(64,IOV_MAX)` buffers may be transferred in a single operation.
+
 
 [heading Tru64]
 
@@ -169,6 +200,10 @@
 resolution. This thread is created on the first call to either
 `ip::tcp::resolver::async_resolve()` or `ip::udp::resolver::async_resolve()`.
 
+Scatter-Gather:
+
+* At most `min(64,IOV_MAX)` buffers may be transferred in a single operation.
+
 
 [heading Windows 95, 98 and Me]
 
@@ -186,6 +221,10 @@
 resolution. This thread is created on the first call to either
 `ip::tcp::resolver::async_resolve()` or `ip::udp::resolver::async_resolve()`.
 
+Scatter-Gather:
+
+* For sockets, at most 16 buffers may be transferred in a single operation.
+
 
 [heading Windows NT, 2000, XP, 2003 and Vista]
 
@@ -209,5 +248,12 @@
 resolution. This thread is created on the first call to either
 `ip::tcp::resolver::async_resolve()` or `ip::udp::resolver::async_resolve()`.
 
+Scatter-Gather:
+
+* For sockets, at most 64 buffers may be transferred in a single operation.
+
+* For stream-oriented handles, only one buffer may be transferred in a single
+operation.
+
 
 [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-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -37,13 +37,24 @@
             <listitem><link linkend="boost_asio.reference.ip__udp.endpoint">ip::udp::endpoint</link></listitem>
             <listitem><link linkend="boost_asio.reference.ip__udp.resolver">ip::udp::resolver</link></listitem>
             <listitem><link linkend="boost_asio.reference.ip__udp.socket">ip::udp::socket</link></listitem>
+ <listitem><link linkend="boost_asio.reference.local__stream_protocol">local::stream_protocol</link></listitem>
+ <listitem><link linkend="boost_asio.reference.local__stream_protocol.acceptor">local::stream_protocol::acceptor</link></listitem>
+ <listitem><link linkend="boost_asio.reference.local__stream_protocol.endpoint">local::stream_protocol::endpoint</link></listitem>
+ <listitem><link linkend="boost_asio.reference.local__stream_protocol.iostream">local::stream_protocol::iostream</link></listitem>
+ <listitem><link linkend="boost_asio.reference.local__stream_protocol.socket">local::stream_protocol::socket</link></listitem>
+ <listitem><link linkend="boost_asio.reference.local__datagram_protocol">local::datagram_protocol</link></listitem>
+ <listitem><link linkend="boost_asio.reference.local__datagram_protocol.endpoint">local::datagram_protocol::endpoint</link></listitem>
+ <listitem><link linkend="boost_asio.reference.local__datagram_protocol.socket">local::datagram_protocol::socket</link></listitem>
             <listitem><link linkend="boost_asio.reference.mutable_buffer">mutable_buffer</link></listitem>
             <listitem><link linkend="boost_asio.reference.mutable_buffers_1">mutable_buffers_1</link></listitem>
+ <listitem><link linkend="boost_asio.reference.posix__descriptor_base">posix::descriptor_base</link></listitem>
+ <listitem><link linkend="boost_asio.reference.posix__stream_descriptor">posix::stream_descriptor</link></listitem>
             <listitem><link linkend="boost_asio.reference.socket_base">socket_base</link></listitem>
             <listitem><link linkend="boost_asio.reference.ssl__context">ssl::context</link></listitem>
             <listitem><link linkend="boost_asio.reference.ssl__context_base">ssl::context_base</link></listitem>
             <listitem><link linkend="boost_asio.reference.ssl__stream_base">ssl::stream_base</link></listitem>
             <listitem><link linkend="boost_asio.reference.streambuf">streambuf</link></listitem>
+ <listitem><link linkend="boost_asio.reference.windows__stream_handle">windows::stream_handle</link></listitem>
           </itemizedlist>
         </entry>
         <entry valign="top">
@@ -66,18 +77,25 @@
             <listitem><link linkend="boost_asio.reference.ip__basic_resolver_entry">ip::basic_resolver_entry</link></listitem>
             <listitem><link linkend="boost_asio.reference.ip__basic_resolver_iterator">ip::basic_resolver_iterator</link></listitem>
             <listitem><link linkend="boost_asio.reference.ip__basic_resolver_query">ip::basic_resolver_query</link></listitem>
+ <listitem><link linkend="boost_asio.reference.local__basic_endpoint">local::basic_endpoint</link></listitem>
+ <listitem><link linkend="boost_asio.reference.posix__basic_descriptor">posix::basic_descriptor</link></listitem>
+ <listitem><link linkend="boost_asio.reference.posix__basic_stream_descriptor">posix::basic_stream_descriptor</link></listitem>
             <listitem><link linkend="boost_asio.reference.ssl__basic_context">ssl::basic_context</link></listitem>
             <listitem><link linkend="boost_asio.reference.ssl__stream">ssl::stream</link></listitem>
+ <listitem><link linkend="boost_asio.reference.windows__basic_handle">windows::basic_handle</link></listitem>
+ <listitem><link linkend="boost_asio.reference.windows__basic_stream_handle">windows::basic_stream_handle</link></listitem>
           </itemizedlist>
           <bridgehead renderas="sect3">Services</bridgehead>
           <itemizedlist>
             <listitem><link linkend="boost_asio.reference.datagram_socket_service">datagram_socket_service</link></listitem>
             <listitem><link linkend="boost_asio.reference.deadline_timer_service">deadline_timer_service</link></listitem>
             <listitem><link linkend="boost_asio.reference.ip__resolver_service">ip::resolver_service</link></listitem>
+ <listitem><link linkend="boost_asio.reference.posix__stream_descriptor_service">posix::stream_descriptor_service</link></listitem>
             <listitem><link linkend="boost_asio.reference.socket_acceptor_service">socket_acceptor_service</link></listitem>
             <listitem><link linkend="boost_asio.reference.ssl__context_service">ssl::context_service</link></listitem>
             <listitem><link linkend="boost_asio.reference.ssl__stream_service">ssl::stream_service</link></listitem>
             <listitem><link linkend="boost_asio.reference.stream_socket_service">stream_socket_service</link></listitem>
+ <listitem><link linkend="boost_asio.reference.windows__stream_handle_service">windows::stream_handle_service</link></listitem>
           </itemizedlist>
           <bridgehead renderas="sect3">Placeholders</bridgehead>
           <itemizedlist>
@@ -99,6 +117,7 @@
             <listitem><link linkend="boost_asio.reference.buffer">buffer</link></listitem>
             <listitem><link linkend="boost_asio.reference.has_service">has_service</link></listitem>
             <listitem><link linkend="boost_asio.reference.ip__host_name">ip::host_name</link></listitem>
+ <listitem><link linkend="boost_asio.reference.local__connect_pair">local::connect_pair</link></listitem>
             <listitem><link linkend="boost_asio.reference.read">read</link></listitem>
             <listitem><link linkend="boost_asio.reference.read_until">read_until</link></listitem>
             <listitem><link linkend="boost_asio.reference.transfer_all">transfer_all</link></listitem>
@@ -132,9 +151,11 @@
             <listitem><link linkend="boost_asio.reference.ConvertibleToConstBuffer">ConvertibleToConstBuffer</link></listitem>
             <listitem><link linkend="boost_asio.reference.ConvertibleToMutableBuffer">ConvertibleToMutableBuffer</link></listitem>
             <listitem><link linkend="boost_asio.reference.DatagramSocketService">DatagramSocketService</link></listitem>
+ <listitem><link linkend="boost_asio.reference.DescriptorService">DescriptorService</link></listitem>
             <listitem><link linkend="boost_asio.reference.Endpoint">Endpoint</link></listitem>
             <listitem><link linkend="boost_asio.reference.GettableSocketOption">GettableSocketOption</link></listitem>
             <listitem><link linkend="boost_asio.reference.Handler">Handler</link></listitem>
+ <listitem><link linkend="boost_asio.reference.HandleService">HandleService</link></listitem>
             <listitem><link linkend="boost_asio.reference.InternetProtocol">InternetProtocol</link></listitem>
             <listitem><link linkend="boost_asio.reference.IoControlCommand">IoControlCommand</link></listitem>
             <listitem><link linkend="boost_asio.reference.IoObjectService">IoObjectService</link></listitem>
@@ -147,6 +168,8 @@
             <listitem><link linkend="boost_asio.reference.SettableSocketOption">SettableSocketOption</link></listitem>
             <listitem><link linkend="boost_asio.reference.SocketAcceptorService">SocketAcceptorService</link></listitem>
             <listitem><link linkend="boost_asio.reference.SocketService">SocketService</link></listitem>
+ <listitem><link linkend="boost_asio.reference.StreamDescriptorService">StreamDescriptorService</link></listitem>
+ <listitem><link linkend="boost_asio.reference.StreamHandleService">StreamHandleService</link></listitem>
             <listitem><link linkend="boost_asio.reference.StreamSocketService">StreamSocketService</link></listitem>
             <listitem><link linkend="boost_asio.reference.SyncReadStream">SyncReadStream</link></listitem>
             <listitem><link linkend="boost_asio.reference.SyncWriteStream">SyncWriteStream</link></listitem>

Modified: branches/proto/v4/libs/asio/doc/reference.dox
==============================================================================
--- branches/proto/v4/libs/asio/doc/reference.dox (original)
+++ branches/proto/v4/libs/asio/doc/reference.dox 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -76,7 +76,10 @@
                          ./../../../boost/asio \
                          ./../../../boost/asio/impl \
                          ./../../../boost/asio/ip \
+ ./../../../boost/asio/local \
+ ./../../../boost/asio/posix \
                          ./../../../boost/asio/ssl \
+ ./../../../boost/asio/windows \
                          ./noncopyable_dox.txt \
                          ./std_exception_dox.txt
 FILE_PATTERNS =

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-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -19,9 +19,11 @@
 [include requirements/ConvertibleToConstBuffer.qbk]
 [include requirements/ConvertibleToMutableBuffer.qbk]
 [include requirements/DatagramSocketService.qbk]
+[include requirements/DescriptorService.qbk]
 [include requirements/Endpoint.qbk]
 [include requirements/GettableSocketOption.qbk]
 [include requirements/Handler.qbk]
+[include requirements/HandleService.qbk]
 [include requirements/InternetProtocol.qbk]
 [include requirements/IoControlCommand.qbk]
 [include requirements/IoObjectService.qbk]
@@ -34,6 +36,8 @@
 [include requirements/SettableSocketOption.qbk]
 [include requirements/SocketAcceptorService.qbk]
 [include requirements/SocketService.qbk]
+[include requirements/StreamDescriptorService.qbk]
+[include requirements/StreamHandleService.qbk]
 [include requirements/StreamSocketService.qbk]
 [include requirements/SyncReadStream.qbk]
 [include requirements/SyncWriteStream.qbk]
@@ -1495,6 +1499,22 @@
 
 ]
 
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
 The basic_datagram_socket class template provides asynchronous and blocking datagram-oriented socket functionality.
 
 
@@ -3207,6 +3227,21 @@
 [endsect]
 
 
+[section:implementation basic_datagram_socket::implementation]
+
+
+['Inherited from basic_io_object.]
+
+The underlying implementation of the I/O object.
+
+ implementation_type implementation;
+
+
+
+[endsect]
+
+
+
 [section:implementation_type basic_datagram_socket::implementation_type]
 
 
@@ -3862,6 +3897,17 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_socket._basic_socket [*~basic_socket]]]
+ [Protected destructor to prevent deletion through this type. ]
+ ]
+
+]
+
 [heading Data Members]
 [table
   [[Name][Description]]
@@ -3888,6 +3934,22 @@
 
 ]
 
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_socket.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
 The basic_socket class template provides functionality that is common to both stream-oriented and datagram-oriented sockets.
 
 
@@ -5165,6 +5227,21 @@
 [endsect]
 
 
+[section:service basic_datagram_socket::service]
+
+
+['Inherited from basic_io_object.]
+
+The service associated with the I/O object.
+
+ service_type & service;
+
+
+
+[endsect]
+
+
+
 [section:service_type basic_datagram_socket::service_type]
 
 
@@ -5539,6 +5616,22 @@
   
 ]
 
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_deadline_timer.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_deadline_timer.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
 The basic_deadline_timer class template provides the ability to perform a blocking or asynchronous wait for a timer to expire.
 
 Most applications will use the boost::asio::deadline\_timer typedef.
@@ -6081,6 +6174,21 @@
 
 
 
+[section:implementation basic_deadline_timer::implementation]
+
+
+['Inherited from basic_io_object.]
+
+The underlying implementation of the I/O object.
+
+ implementation_type implementation;
+
+
+
+[endsect]
+
+
+
 [section:implementation_type basic_deadline_timer::implementation_type]
 
 
@@ -6120,6 +6228,21 @@
 
 
 
+[section:service basic_deadline_timer::service]
+
+
+['Inherited from basic_io_object.]
+
+The service associated with the I/O object.
+
+ service_type & service;
+
+
+
+[endsect]
+
+
+
 [section:service_type basic_deadline_timer::service_type]
 
 
@@ -6272,6 +6395,58 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_io_object.basic_io_object [*basic_io_object]]]
+ [Construct a basic_io_object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_io_object._basic_io_object [*~basic_io_object]]]
+ [Protected destructor to prevent deletion through this type. ]
+ ]
+
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_io_object.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_io_object.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
+
+[section:basic_io_object basic_io_object::basic_io_object]
+
+Construct a basic_io_object.
+
+ basic_io_object(
+ boost::asio::io_service & io_service);
+
+
+Performs:
+
+ service.construct(implementation);
+
+
+
+
+
+[endsect]
+
+
 
 [section:get_io_service basic_io_object::get_io_service]
 
@@ -6293,6 +6468,18 @@
 
 
 
+[section:implementation basic_io_object::implementation]
+
+The underlying implementation of the I/O object.
+
+ implementation_type implementation;
+
+
+
+[endsect]
+
+
+
 [section:implementation_type basic_io_object::implementation_type]
 
 The underlying implementation type of I/O object.
@@ -6326,6 +6513,18 @@
 
 
 
+[section:service basic_io_object::service]
+
+The service associated with the I/O object.
+
+ service_type & service;
+
+
+
+[endsect]
+
+
+
 [section:service_type basic_io_object::service_type]
 
 The type of the service that will be used to provide I/O operations.
@@ -6339,6 +6538,25 @@
 
 
 
+[section:_basic_io_object basic_io_object::~basic_io_object]
+
+Protected destructor to prevent deletion through this type.
+
+ ~basic_io_object();
+
+
+Performs:
+
+ service.destroy(implementation);
+
+
+
+
+
+[endsect]
+
+
+
 [endsect]
 
 [section:basic_socket basic_socket]
@@ -6617,6 +6835,17 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_socket._basic_socket [*~basic_socket]]]
+ [Protected destructor to prevent deletion through this type. ]
+ ]
+
+]
+
 [heading Data Members]
 [table
   [[Name][Description]]
@@ -6643,6 +6872,22 @@
 
 ]
 
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_socket.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
 The basic_socket class template provides functionality that is common to both stream-oriented and datagram-oriented sockets.
 
 
@@ -7818,6 +8063,21 @@
 [endsect]
 
 
+[section:implementation basic_socket::implementation]
+
+
+['Inherited from basic_io_object.]
+
+The underlying implementation of the I/O object.
+
+ implementation_type implementation;
+
+
+
+[endsect]
+
+
+
 [section:implementation_type basic_socket::implementation_type]
 
 
@@ -8460,6 +8720,17 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_socket._basic_socket [*~basic_socket]]]
+ [Protected destructor to prevent deletion through this type. ]
+ ]
+
+]
+
 [heading Data Members]
 [table
   [[Name][Description]]
@@ -8486,6 +8757,22 @@
 
 ]
 
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_socket.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
 The basic_socket class template provides functionality that is common to both stream-oriented and datagram-oriented sockets.
 
 
@@ -9064,6 +9351,21 @@
 
 
 
+[section:service basic_socket::service]
+
+
+['Inherited from basic_io_object.]
+
+The service associated with the I/O object.
+
+ service_type & service;
+
+
+
+[endsect]
+
+
+
 [section:service_type basic_socket::service_type]
 
 
@@ -9333,6 +9635,18 @@
 
 
 
+[section:_basic_socket basic_socket::~basic_socket]
+
+Protected destructor to prevent deletion through this type.
+
+ ~basic_socket();
+
+
+
+[endsect]
+
+
+
 [endsect]
 
 [section:basic_socket_acceptor basic_socket_acceptor]
@@ -9605,6 +9919,22 @@
 
 ]
 
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
 The basic_socket_acceptor class template is used for accepting new socket connections.
 
 
@@ -10818,6 +11148,21 @@
 [endsect]
 
 
+[section:implementation basic_socket_acceptor::implementation]
+
+
+['Inherited from basic_io_object.]
+
+The underlying implementation of the I/O object.
+
+ implementation_type implementation;
+
+
+
+[endsect]
+
+
+
 [section:implementation_type basic_socket_acceptor::implementation_type]
 
 
@@ -11611,6 +11956,21 @@
 
 
 
+[section:service basic_socket_acceptor::service]
+
+
+['Inherited from basic_io_object.]
+
+The service associated with the I/O object.
+
+ service_type & service;
+
+
+
+[endsect]
+
+
+
 [section:service_type basic_socket_acceptor::service_type]
 
 
@@ -12192,6 +12552,32 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_socket_streambuf.overflow [*overflow]]]
+ []
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_streambuf.setbuf [*setbuf]]]
+ []
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_streambuf.sync [*sync]]]
+ []
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_streambuf.underflow [*underflow]]]
+ []
+ ]
+
+]
+
 [heading Data Members]
 [table
   [[Name][Description]]
@@ -12218,6 +12604,22 @@
 
 ]
 
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_socket_streambuf.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_streambuf.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
 [section:assign basic_socket_streambuf::assign]
 
 Assign an existing native socket to the socket.
@@ -13262,6 +13664,21 @@
 [endsect]
 
 
+[section:implementation basic_socket_streambuf::implementation]
+
+
+['Inherited from basic_io_object.]
+
+The underlying implementation of the I/O object.
+
+ implementation_type implementation;
+
+
+
+[endsect]
+
+
+
 [section:implementation_type basic_socket_streambuf::implementation_type]
 
 
@@ -13917,6 +14334,17 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_socket._basic_socket [*~basic_socket]]]
+ [Protected destructor to prevent deletion through this type. ]
+ ]
+
+]
+
 [heading Data Members]
 [table
   [[Name][Description]]
@@ -13943,6 +14371,22 @@
 
 ]
 
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_socket.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
 The basic_socket class template provides functionality that is common to both stream-oriented and datagram-oriented sockets.
 
 
@@ -14208,6 +14652,19 @@
 [endsect]
 
 
+[section:overflow basic_socket_streambuf::overflow]
+
+
+
+ int_type overflow(
+ int_type c);
+
+
+
+[endsect]
+
+
+
 [section:protocol_type basic_socket_streambuf::protocol_type]
 
 
@@ -14542,6 +14999,21 @@
 
 
 
+[section:service basic_socket_streambuf::service]
+
+
+['Inherited from basic_io_object.]
+
+The service associated with the I/O object.
+
+ service_type & service;
+
+
+
+[endsect]
+
+
+
 [section:service_type basic_socket_streambuf::service_type]
 
 
@@ -14669,6 +15141,20 @@
 
 [endsect]
 
+
+[section:setbuf basic_socket_streambuf::setbuf]
+
+
+
+ std::streambuf * setbuf(
+ char_type * s,
+ std::streamsize n);
+
+
+
+[endsect]
+
+
 [section:shutdown basic_socket_streambuf::shutdown]
 
 Disable sends or receives on the socket.
@@ -14815,6 +15301,30 @@
 
 
 
+[section:sync basic_socket_streambuf::sync]
+
+
+
+ int sync();
+
+
+
+[endsect]
+
+
+
+[section:underflow basic_socket_streambuf::underflow]
+
+
+
+ int_type underflow();
+
+
+
+[endsect]
+
+
+
 [section:_basic_socket_streambuf basic_socket_streambuf::~basic_socket_streambuf]
 
 Destructor flushes buffered data.
@@ -15170,6 +15680,22 @@
 
 ]
 
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
 The basic_stream_socket class template provides asynchronous and blocking stream-oriented socket functionality.
 
 
@@ -16770,6 +17296,21 @@
 [endsect]
 
 
+[section:implementation basic_stream_socket::implementation]
+
+
+['Inherited from basic_io_object.]
+
+The underlying implementation of the I/O object.
+
+ implementation_type implementation;
+
+
+
+[endsect]
+
+
+
 [section:implementation_type basic_stream_socket::implementation_type]
 
 
@@ -17425,6 +17966,17 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_socket._basic_socket [*~basic_socket]]]
+ [Protected destructor to prevent deletion through this type. ]
+ ]
+
+]
+
 [heading Data Members]
 [table
   [[Name][Description]]
@@ -17451,6 +18003,22 @@
 
 ]
 
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_socket.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
 The basic_socket class template provides functionality that is common to both stream-oriented and datagram-oriented sockets.
 
 
@@ -18526,6 +19094,21 @@
 
 
 
+[section:service basic_stream_socket::service]
+
+
+['Inherited from basic_io_object.]
+
+The service associated with the I/O object.
+
+ service_type & service;
+
+
+
+[endsect]
+
+
+
 [section:service_type basic_stream_socket::service_type]
 
 
@@ -18986,6 +19569,27 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_streambuf.overflow [*overflow]]]
+ []
+ ]
+
+ [
+ [[link boost_asio.reference.basic_streambuf.reserve [*reserve]]]
+ []
+ ]
+
+ [
+ [[link boost_asio.reference.basic_streambuf.underflow [*underflow]]]
+ []
+ ]
+
+]
+
 
 [section:basic_streambuf basic_streambuf::basic_streambuf]
 
@@ -19077,6 +19681,19 @@
 
 
 
+[section:overflow basic_streambuf::overflow]
+
+
+
+ int_type overflow(
+ int_type c);
+
+
+
+[endsect]
+
+
+
 [section:prepare basic_streambuf::prepare]
 
 Get a list of buffers that represents the put area, with the given size.
@@ -19090,6 +19707,19 @@
 
 
 
+[section:reserve basic_streambuf::reserve]
+
+
+
+ void reserve(
+ std::size_t n);
+
+
+
+[endsect]
+
+
+
 [section:size basic_streambuf::size]
 
 Return the size of the get area in characters.
@@ -19102,6 +19732,18 @@
 
 
 
+[section:underflow basic_streambuf::underflow]
+
+
+
+ int_type underflow();
+
+
+
+[endsect]
+
+
+
 [endsect]
 
 [section:buffer buffer]
@@ -21409,18 +22051,23 @@
   
 ]
 
-[heading Friends]
+[heading Related Functions]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.const_buffer.buffer_cast_helper [*buffer_cast_helper]]]
- []
+ [[link boost_asio.reference.const_buffer.buffer_cast [*buffer_cast]]]
+ [Cast a non-modifiable buffer to a specified pointer to POD type. ]
   ]
   
   [
- [[link boost_asio.reference.const_buffer.buffer_size_helper [*buffer_size_helper]]]
- []
+ [[link boost_asio.reference.const_buffer.buffer_size [*buffer_size]]]
+ [Get the number of bytes in a non-modifiable buffer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.const_buffer.operator_plus_ [*operator+]]]
+ [Create a new non-modifiable buffer that is offset from the start of another. ]
   ]
   
 ]
@@ -21428,11 +22075,13 @@
 The const_buffer class provides a safe representation of a buffer that cannot be modified. It does not own the underlying data, and so is cheap to copy or assign.
 
 
-[section:buffer_cast_helper const_buffer::buffer_cast_helper]
-
+[section:buffer_cast const_buffer::buffer_cast]
 
+Cast a non-modifiable buffer to a specified pointer to POD type.
 
- friend const void * buffer_cast_helper(
+ template<
+ typename ``[link boost_asio.reference.PointerToPodType PointerToPodType]``>
+ PointerToPodType buffer_cast(
       const const_buffer & b);
 
 
@@ -21441,11 +22090,11 @@
 
 
 
-[section:buffer_size_helper const_buffer::buffer_size_helper]
-
+[section:buffer_size const_buffer::buffer_size]
 
+Get the number of bytes in a non-modifiable buffer.
 
- friend std::size_t buffer_size_helper(
+ std::size_t buffer_size(
       const const_buffer & b);
 
 
@@ -21507,34 +22156,76 @@
 
 [endsect]
 
+[section:operator_plus_ const_buffer::operator+]
 
-[endsect]
+Create a new non-modifiable buffer that is offset from the start of another.
 
-[section:const_buffers_1 const_buffers_1]
+ const_buffer ``[link boost_asio.reference.const_buffer.operator_plus_.overload1 operator+]``(
+ const const_buffer & b,
+ std::size_t start);
 
-Adapts a single non-modifiable buffer so that it meets the requirements of the ConstBufferSequence concept.
+ const_buffer ``[link boost_asio.reference.const_buffer.operator_plus_.overload2 operator+]``(
+ std::size_t start,
+ const const_buffer & b);
 
- class const_buffers_1 :
- public const_buffer
 
+[section:overload1 const_buffer::operator+ (1 of 2 overloads)]
 
-[heading Types]
-[table
- [[Name][Description]]
+Create a new non-modifiable buffer that is offset from the start of another.
 
- [
+ const_buffer operator+(
+ const const_buffer & b,
+ std::size_t start);
 
- [[link boost_asio.reference.const_buffers_1.const_iterator [*const_iterator]]]
- [A random-access iterator type that may be used to read elements. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.const_buffers_1.value_type [*value_type]]]
- [The type for each element in the list of buffers. ]
-
- ]
+[endsect]
+
+
+
+[section:overload2 const_buffer::operator+ (2 of 2 overloads)]
+
+Create a new non-modifiable buffer that is offset from the start of another.
+
+ const_buffer operator+(
+ std::size_t start,
+ const const_buffer & b);
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[endsect]
+
+[section:const_buffers_1 const_buffers_1]
+
+Adapts a single non-modifiable buffer so that it meets the requirements of the ConstBufferSequence concept.
+
+ class const_buffers_1 :
+ public const_buffer
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.const_buffers_1.const_iterator [*const_iterator]]]
+ [A random-access iterator type that may be used to read elements. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.const_buffers_1.value_type [*value_type]]]
+ [The type for each element in the list of buffers. ]
+
+ ]
 
 ]
 
@@ -21559,6 +22250,27 @@
   
 ]
 
+[heading Related Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.const_buffers_1.buffer_cast [*buffer_cast]]]
+ [Cast a non-modifiable buffer to a specified pointer to POD type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.const_buffers_1.buffer_size [*buffer_size]]]
+ [Get the number of bytes in a non-modifiable buffer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.const_buffers_1.operator_plus_ [*operator+]]]
+ [Create a new non-modifiable buffer that is offset from the start of another. ]
+ ]
+
+]
+
 
 [section:begin const_buffers_1::begin]
 
@@ -21572,6 +22284,40 @@
 
 
 
+[section:buffer_cast const_buffers_1::buffer_cast]
+
+
+['Inherited from const_buffer.]
+
+Cast a non-modifiable buffer to a specified pointer to POD type.
+
+ template<
+ typename ``[link boost_asio.reference.PointerToPodType PointerToPodType]``>
+ PointerToPodType buffer_cast(
+ const const_buffer & b);
+
+
+
+[endsect]
+
+
+
+[section:buffer_size const_buffers_1::buffer_size]
+
+
+['Inherited from const_buffer.]
+
+Get the number of bytes in a non-modifiable buffer.
+
+ std::size_t buffer_size(
+ const const_buffer & b);
+
+
+
+[endsect]
+
+
+
 [section:const_buffers_1 const_buffers_1::const_buffers_1]
 
 Construct to represent a single non-modifiable buffer.
@@ -21609,6 +22355,54 @@
 [endsect]
 
 
+[section:operator_plus_ const_buffers_1::operator+]
+
+Create a new non-modifiable buffer that is offset from the start of another.
+
+ const_buffer ``[link boost_asio.reference.const_buffers_1.operator_plus_.overload1 operator+]``(
+ const const_buffer & b,
+ std::size_t start);
+
+ const_buffer ``[link boost_asio.reference.const_buffers_1.operator_plus_.overload2 operator+]``(
+ std::size_t start,
+ const const_buffer & b);
+
+
+[section:overload1 const_buffers_1::operator+ (1 of 2 overloads)]
+
+
+['Inherited from const_buffer.]
+
+Create a new non-modifiable buffer that is offset from the start of another.
+
+ const_buffer operator+(
+ const const_buffer & b,
+ std::size_t start);
+
+
+
+[endsect]
+
+
+
+[section:overload2 const_buffers_1::operator+ (2 of 2 overloads)]
+
+
+['Inherited from const_buffer.]
+
+Create a new non-modifiable buffer that is offset from the start of another.
+
+ const_buffer operator+(
+ std::size_t start,
+ const const_buffer & b);
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:value_type const_buffers_1::value_type]
 
@@ -21628,18 +22422,23 @@
   
 ]
 
-[heading Friends]
+[heading Related Functions]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.const_buffer.buffer_cast_helper [*buffer_cast_helper]]]
- []
+ [[link boost_asio.reference.const_buffer.buffer_cast [*buffer_cast]]]
+ [Cast a non-modifiable buffer to a specified pointer to POD type. ]
   ]
   
   [
- [[link boost_asio.reference.const_buffer.buffer_size_helper [*buffer_size_helper]]]
- []
+ [[link boost_asio.reference.const_buffer.buffer_size [*buffer_size]]]
+ [Get the number of bytes in a non-modifiable buffer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.const_buffer.operator_plus_ [*operator+]]]
+ [Create a new non-modifiable buffer that is offset from the start of another. ]
   ]
   
 ]
@@ -22519,6 +23318,22 @@
   
 ]
 
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_deadline_timer.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_deadline_timer.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
 The basic_deadline_timer class template provides the ability to perform a blocking or asynchronous wait for a timer to expire.
 
 Most applications will use the boost::asio::deadline\_timer typedef.
@@ -23134,6 +23949,11 @@
   ]
 
   [
+ [name_too_long]
+ [The name was too long. ]
+ ]
+
+ [
     [network_down]
     [Network is down. ]
   ]
@@ -24422,6 +25242,22 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.io_service__service.service [*service]]]
+ [Constructor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.io_service__service._service [*~service]]]
+ [Destructor. ]
+ ]
+
+]
+
 
 [section:get_io_service io_service::service::get_io_service]
 
@@ -24447,6 +25283,42 @@
 
 
 
+[section:service io_service::service::service]
+
+Constructor.
+
+ service(
+ boost::asio::io_service & owner);
+
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[owner][The io\_service object that owns the service. ]]
+
+]
+
+
+
+[endsect]
+
+
+
+[section:_service io_service::service::~service]
+
+Destructor.
+
+ virtual ~service();
+
+
+
+[endsect]
+
+
+
 [endsect]
 
 [section:io_service__strand io_service::strand]
@@ -24915,6 +25787,17 @@
   
 ]
 
+[heading Related Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__address.operator_lt__lt_ [*operator<<]]]
+ [Output an address as a string. ]
+ ]
+
+]
+
 The
 [link boost_asio.reference.ip__address ip::address] class provides the ability to use either IP version 4 or version 6 addresses.
 
@@ -25120,6 +26003,42 @@
 [endsect]
 
 
+
+[section:operator_lt__lt_ ip::address::operator<<]
+
+Output an address as a string.
+
+ template<
+ typename ``[link boost_asio.reference.Elem Elem]``,
+ typename ``[link boost_asio.reference.Traits Traits]``>
+ std::basic_ostream< Elem, Traits > & operator<<(
+ std::basic_ostream< Elem, Traits > & os,
+ const address & addr);
+
+
+Used to output a human-readable string for a specified address.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[os][The output stream to which the string will be written.]]
+
+[[addr][The address to be written.]]
+
+]
+
+[heading Return Value]
+
+The output stream.
+
+
+
+[endsect]
+
+
 [section:operator_eq_ ip::address::operator=]
 
 Assign from another address.
@@ -25383,6 +26302,17 @@
   
 ]
 
+[heading Related Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__address_v4.operator_lt__lt_ [*operator<<]]]
+ [Output an address as a string. ]
+ ]
+
+]
+
 The
 [link boost_asio.reference.ip__address_v4 ip::address_v4] class provides the ability to use and manipulate IP version 4 addresses.
 
@@ -25701,6 +26631,42 @@
 
 
 
+[section:operator_lt__lt_ ip::address_v4::operator<<]
+
+Output an address as a string.
+
+ template<
+ typename ``[link boost_asio.reference.Elem Elem]``,
+ typename ``[link boost_asio.reference.Traits Traits]``>
+ std::basic_ostream< Elem, Traits > & operator<<(
+ std::basic_ostream< Elem, Traits > & os,
+ const address_v4 & addr);
+
+
+Used to output a human-readable string for a specified address.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[os][The output stream to which the string will be written.]]
+
+[[addr][The address to be written.]]
+
+]
+
+[heading Return Value]
+
+The output stream.
+
+
+
+[endsect]
+
+
+
 [section:operator_lt__eq_ ip::address_v4::operator<=]
 
 Compare addresses for ordering.
@@ -26009,6 +26975,17 @@
   
 ]
 
+[heading Related Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__address_v6.operator_lt__lt_ [*operator<<]]]
+ [Output an address as a string. ]
+ ]
+
+]
+
 The
 [link boost_asio.reference.ip__address_v6 ip::address_v6] class provides the ability to use and manipulate IP version 6 addresses.
 
@@ -26358,6 +27335,42 @@
 
 
 
+[section:operator_lt__lt_ ip::address_v6::operator<<]
+
+Output an address as a string.
+
+ template<
+ typename ``[link boost_asio.reference.Elem Elem]``,
+ typename ``[link boost_asio.reference.Traits Traits]``>
+ std::basic_ostream< Elem, Traits > & operator<<(
+ std::basic_ostream< Elem, Traits > & os,
+ const address_v6 & addr);
+
+
+Used to output a human-readable string for a specified address.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[os][The output stream to which the string will be written.]]
+
+[[addr][The address to be written.]]
+
+]
+
+[heading Return Value]
+
+The output stream.
+
+
+
+[endsect]
+
+
+
 [section:operator_lt__eq_ ip::address_v6::operator<=]
 
 Compare addresses for ordering.
@@ -26656,6 +27669,17 @@
   
 ]
 
+[heading Related Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__basic_endpoint.operator_lt__lt_ [*operator<<]]]
+ [Output an endpoint as a string. ]
+ ]
+
+]
+
 The
 [link boost_asio.reference.ip__basic_endpoint ip::basic_endpoint] class template describes an endpoint that may be associated with a particular socket.
 
@@ -26880,6 +27904,39 @@
 
 
 
+[section:operator_lt__lt_ ip::basic_endpoint::operator<<]
+
+Output an endpoint as a string.
+
+ std::basic_ostream< Elem, Traits > & operator<<(
+ std::basic_ostream< Elem, Traits > & os,
+ const basic_endpoint< InternetProtocol > & endpoint);
+
+
+Used to output a human-readable string for a specified endpoint.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[os][The output stream to which the string will be written.]]
+
+[[endpoint][The endpoint to be written.]]
+
+]
+
+[heading Return Value]
+
+The output stream.
+
+
+
+[endsect]
+
+
+
 [section:operator_eq_ ip::basic_endpoint::operator=]
 
 Assign from another endpoint.
@@ -27090,6 +28147,22 @@
   
 ]
 
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
 The basic_resolver class template provides the ability to resolve a query to a list of endpoints.
 
 
@@ -27287,6 +28360,21 @@
 
 
 
+[section:implementation ip::basic_resolver::implementation]
+
+
+['Inherited from basic_io_object.]
+
+The underlying implementation of the I/O object.
+
+ implementation_type implementation;
+
+
+
+[endsect]
+
+
+
 [section:implementation_type ip::basic_resolver::implementation_type]
 
 
@@ -27549,6 +28637,21 @@
 [endsect]
 
 
+[section:service ip::basic_resolver::service]
+
+
+['Inherited from basic_io_object.]
+
+The service associated with the I/O object.
+
+ service_type & service;
+
+
+
+[endsect]
+
+
+
 [section:service_type ip::basic_resolver::service_type]
 
 
@@ -28419,6 +29522,17 @@
   class resolver_query_base
 
 
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__resolver_query_base._resolver_query_base [*~resolver_query_base]]]
+ [Protected destructor to prevent deletion through this type. ]
+ ]
+
+]
+
 [heading Data Members]
 [table
   [[Name][Description]]
@@ -28545,6 +29659,18 @@
 
 
 
+[section:_resolver_query_base ip::resolver_query_base::~resolver_query_base]
+
+Protected destructor to prevent deletion through this type.
+
+ ~resolver_query_base();
+
+
+
+[endsect]
+
+
+
 [endsect]
 
 [section:ip__resolver_service ip::resolver_service]
@@ -29327,6 +30453,22 @@
 
 ]
 
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
 The basic_socket_acceptor class template is used for accepting new socket connections.
 
 
@@ -29456,6 +30598,17 @@
   
 ]
 
+[heading Related Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__basic_endpoint.operator_lt__lt_ [*operator<<]]]
+ [Output an endpoint as a string. ]
+ ]
+
+]
+
 The
 [link boost_asio.reference.ip__basic_endpoint ip::basic_endpoint] class template describes an endpoint that may be associated with a particular socket.
 
@@ -29695,6 +30848,22 @@
   
 ]
 
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
 The basic_resolver class template provides the ability to resolve a query to a list of endpoints.
 
 
@@ -30199,6 +31368,22 @@
 
 ]
 
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
 The basic_stream_socket class template provides asynchronous and blocking stream-oriented socket functionality.
 
 
@@ -30459,6 +31644,17 @@
   
 ]
 
+[heading Related Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__basic_endpoint.operator_lt__lt_ [*operator<<]]]
+ [Output an endpoint as a string. ]
+ ]
+
+]
+
 The
 [link boost_asio.reference.ip__basic_endpoint ip::basic_endpoint] class template describes an endpoint that may be associated with a particular socket.
 
@@ -30619,6 +31815,22 @@
   
 ]
 
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
 The basic_resolver class template provides the ability to resolve a query to a list of endpoints.
 
 
@@ -31123,6 +32335,22 @@
 
 ]
 
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
 The basic_datagram_socket class template provides asynchronous and blocking datagram-oriented socket functionality.
 
 
@@ -31327,20 +32555,77 @@
 
 [endsect]
 
-[section:mutable_buffer mutable_buffer]
+[section:local__basic_endpoint local::basic_endpoint]
 
-Holds a buffer that can be modified.
+Describes an endpoint for a UNIX socket.
 
- class mutable_buffer
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``>
+ class basic_endpoint
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.local__basic_endpoint.data_type [*data_type]]]
+ [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
+
+ ]
 
+ [
+
+ [[link boost_asio.reference.local__basic_endpoint.protocol_type [*protocol_type]]]
+ [The protocol type associated with the endpoint. ]
+
+ ]
+
+]
 
 [heading Member Functions]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.mutable_buffer.mutable_buffer [*mutable_buffer]]]
- [Construct an empty buffer. ]
+ [[link boost_asio.reference.local__basic_endpoint.basic_endpoint [*basic_endpoint]]]
+ [Default constructor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.capacity [*capacity]]]
+ [Get the capacity of the endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.data [*data]]]
+ [Get the underlying endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_eq_ [*operator=]]]
+ [Assign from another endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.path [*path]]]
+ [Get the path associated with the endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.protocol [*protocol]]]
+ [The protocol associated with the endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.resize [*resize]]]
+ [Set the underlying size of the endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.size [*size]]]
+ [Get the underlying size of the endpoint in the native type. ]
   ]
   
 ]
@@ -31350,61 +32635,91 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.mutable_buffer.buffer_cast_helper [*buffer_cast_helper]]]
- []
+ [[link boost_asio.reference.local__basic_endpoint.operator_not__eq_ [*operator!=]]]
+ [Compare two endpoints for inequality. ]
   ]
   
   [
- [[link boost_asio.reference.mutable_buffer.buffer_size_helper [*buffer_size_helper]]]
- []
+ [[link boost_asio.reference.local__basic_endpoint.operator_lt_ [*operator<]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_eq__eq_ [*operator==]]]
+ [Compare two endpoints for equality. ]
   ]
   
 ]
 
-The mutable_buffer class provides a safe representation of a buffer that can be modified. It does not own the underlying data, and so is cheap to copy or assign.
+[heading Related Functions]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_lt__lt_ [*operator<<]]]
+ [Output an endpoint as a string. ]
+ ]
+
+]
 
-[section:buffer_cast_helper mutable_buffer::buffer_cast_helper]
+The
+[link boost_asio.reference.local__basic_endpoint local::basic_endpoint] class template describes an endpoint that may be associated with a particular UNIX socket.
 
 
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
 
- friend void * buffer_cast_helper(
- const mutable_buffer & b);
+[*Shared] [*objects:] Unsafe.
 
 
+[section:basic_endpoint local::basic_endpoint::basic_endpoint]
 
-[endsect]
+Default constructor.
 
+ ``[link boost_asio.reference.local__basic_endpoint.basic_endpoint.overload1 basic_endpoint]``();
 
+ ``[link boost_asio.reference.local__basic_endpoint.basic_endpoint.overload2 basic_endpoint]``(
+ const char * path);
 
-[section:buffer_size_helper mutable_buffer::buffer_size_helper]
+ ``[link boost_asio.reference.local__basic_endpoint.basic_endpoint.overload3 basic_endpoint]``(
+ const std::string & path);
 
+ ``[link boost_asio.reference.local__basic_endpoint.basic_endpoint.overload4 basic_endpoint]``(
+ const basic_endpoint & other);
 
 
- friend std::size_t buffer_size_helper(
- const mutable_buffer & b);
+[section:overload1 local::basic_endpoint::basic_endpoint (1 of 4 overloads)]
+
+Default constructor.
+
+ basic_endpoint();
 
 
 
 [endsect]
 
 
-[section:mutable_buffer mutable_buffer::mutable_buffer]
 
-Construct an empty buffer.
+[section:overload2 local::basic_endpoint::basic_endpoint (2 of 4 overloads)]
 
- ``[link boost_asio.reference.mutable_buffer.mutable_buffer.overload1 mutable_buffer]``();
+Construct an endpoint using the specified path name.
 
- ``[link boost_asio.reference.mutable_buffer.mutable_buffer.overload2 mutable_buffer]``(
- void * data,
- std::size_t size);
+ basic_endpoint(
+ const char * path);
 
 
-[section:overload1 mutable_buffer::mutable_buffer (1 of 2 overloads)]
 
-Construct an empty buffer.
+[endsect]
 
- mutable_buffer();
+
+
+[section:overload3 local::basic_endpoint::basic_endpoint (3 of 4 overloads)]
+
+Construct an endpoint using the specified path name.
+
+ basic_endpoint(
+ const std::string & path);
 
 
 
@@ -31412,13 +32727,12 @@
 
 
 
-[section:overload2 mutable_buffer::mutable_buffer (2 of 2 overloads)]
+[section:overload4 local::basic_endpoint::basic_endpoint (4 of 4 overloads)]
 
-Construct a buffer to represent a given memory range.
+Copy constructor.
 
- mutable_buffer(
- void * data,
- std::size_t size);
+ basic_endpoint(
+ const basic_endpoint & other);
 
 
 
@@ -31428,75 +32742,57 @@
 [endsect]
 
 
+[section:capacity local::basic_endpoint::capacity]
+
+Get the capacity of the endpoint in the native type.
+
+ std::size_t capacity() const;
+
+
+
 [endsect]
 
-[section:mutable_buffers_1 mutable_buffers_1]
 
-Adapts a single modifiable buffer so that it meets the requirements of the MutableBufferSequence concept.
+[section:data local::basic_endpoint::data]
 
- class mutable_buffers_1 :
- public mutable_buffer
+Get the underlying endpoint in the native type.
 
+ data_type * ``[link boost_asio.reference.local__basic_endpoint.data.overload1 data]``();
 
-[heading Types]
-[table
- [[Name][Description]]
+ const data_type * ``[link boost_asio.reference.local__basic_endpoint.data.overload2 data]``() const;
 
- [
 
- [[link boost_asio.reference.mutable_buffers_1.const_iterator [*const_iterator]]]
- [A random-access iterator type that may be used to read elements. ]
-
- ]
+[section:overload1 local::basic_endpoint::data (1 of 2 overloads)]
 
- [
+Get the underlying endpoint in the native type.
 
- [[link boost_asio.reference.mutable_buffers_1.value_type [*value_type]]]
- [The type for each element in the list of buffers. ]
-
- ]
+ data_type * data();
 
-]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.mutable_buffers_1.begin [*begin]]]
- [Get a random-access iterator to the first element. ]
- ]
-
- [
- [[link boost_asio.reference.mutable_buffers_1.end [*end]]]
- [Get a random-access iterator for one past the last element. ]
- ]
-
- [
- [[link boost_asio.reference.mutable_buffers_1.mutable_buffers_1 [*mutable_buffers_1]]]
- [Construct to represent a single modifiable buffer. ]
- ]
-
-]
+[endsect]
 
 
-[section:begin mutable_buffers_1::begin]
 
-Get a random-access iterator to the first element.
+[section:overload2 local::basic_endpoint::data (2 of 2 overloads)]
 
- const_iterator begin() const;
+Get the underlying endpoint in the native type.
+
+ const data_type * data() const;
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:const_iterator mutable_buffers_1::const_iterator]
 
-A random-access iterator type that may be used to read elements.
+[section:data_type local::basic_endpoint::data_type]
 
- typedef const mutable_buffer * const_iterator;
+The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer.
+
+ typedef implementation_defined data_type;
 
 
 
@@ -31505,11 +32801,13 @@
 
 
 
-[section:end mutable_buffers_1::end]
+[section:operator_not__eq_ local::basic_endpoint::operator!=]
 
-Get a random-access iterator for one past the last element.
+Compare two endpoints for inequality.
 
- const_iterator end() const;
+ friend bool operator!=(
+ const basic_endpoint< Protocol > & e1,
+ const basic_endpoint< Protocol > & e2);
 
 
 
@@ -31517,12 +32815,13 @@
 
 
 
-[section:mutable_buffers_1 mutable_buffers_1::mutable_buffers_1]
+[section:operator_lt_ local::basic_endpoint::operator<]
 
-Construct to represent a single modifiable buffer.
+Compare endpoints for ordering.
 
- mutable_buffers_1(
- const mutable_buffer & b);
+ friend bool operator<(
+ const basic_endpoint< Protocol > & e1,
+ const basic_endpoint< Protocol > & e2);
 
 
 
@@ -31530,56 +32829,45 @@
 
 
 
-[section:value_type mutable_buffers_1::value_type]
+[section:operator_lt__lt_ local::basic_endpoint::operator<<]
 
-The type for each element in the list of buffers.
+Output an endpoint as a string.
 
- typedef mutable_buffer value_type;
+ std::basic_ostream< Elem, Traits > & operator<<(
+ std::basic_ostream< Elem, Traits > & os,
+ const basic_endpoint< Protocol > & endpoint);
 
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+Used to output a human-readable string for a specified endpoint.
 
- [
- [[link boost_asio.reference.mutable_buffer.mutable_buffer [*mutable_buffer]]]
- [Construct an empty buffer. ]
- ]
-
-]
 
-[heading Friends]
-[table
- [[Name][Description]]
+[heading Parameters]
+
 
- [
- [[link boost_asio.reference.mutable_buffer.buffer_cast_helper [*buffer_cast_helper]]]
- []
- ]
-
- [
- [[link boost_asio.reference.mutable_buffer.buffer_size_helper [*buffer_size_helper]]]
- []
- ]
+[variablelist
   
-]
-
-The mutable_buffer class provides a safe representation of a buffer that can be modified. It does not own the underlying data, and so is cheap to copy or assign.
+[[os][The output stream to which the string will be written.]]
 
+[[endpoint][The endpoint to be written.]]
 
+]
 
-[endsect]
+[heading Return Value]
+
+The output stream.
 
 
 
 [endsect]
 
 
-[section:placeholders__bytes_transferred placeholders::bytes_transferred]
 
-An argument placeholder, for use with boost::bind(), that corresponds to the bytes_transferred argument of a handler for asynchronous functions such as boost::asio::basic_stream_socket::async_write_some or boost::asio::async_write.
+[section:operator_eq_ local::basic_endpoint::operator=]
 
- unspecified bytes_transferred;
+Assign from another endpoint.
+
+ basic_endpoint & operator=(
+ const basic_endpoint & other);
 
 
 
@@ -31587,152 +32875,89 @@
 
 
 
-[section:placeholders__error placeholders::error]
+[section:operator_eq__eq_ local::basic_endpoint::operator==]
 
-An argument placeholder, for use with boost::bind(), that corresponds to the error argument of a handler for any of the asynchronous functions.
+Compare two endpoints for equality.
 
- unspecified error;
+ friend bool operator==(
+ const basic_endpoint< Protocol > & e1,
+ const basic_endpoint< Protocol > & e2);
 
 
 
 [endsect]
 
 
+[section:path local::basic_endpoint::path]
 
-[section:placeholders__iterator placeholders::iterator]
-
-An argument placeholder, for use with boost::bind(), that corresponds to the iterator argument of a handler for asynchronous functions such as boost::asio::basic_resolver::resolve.
+Get the path associated with the endpoint.
 
- unspecified iterator;
+ std::string ``[link boost_asio.reference.local__basic_endpoint.path.overload1 path]``() const;
 
+ void ``[link boost_asio.reference.local__basic_endpoint.path.overload2 path]``(
+ const char * p);
 
+ void ``[link boost_asio.reference.local__basic_endpoint.path.overload3 path]``(
+ const std::string & p);
 
-[endsect]
 
+[section:overload1 local::basic_endpoint::path (1 of 3 overloads)]
 
-[section:read read]
+Get the path associated with the endpoint.
 
-Attempt to read a certain amount of data from a stream before returning.
+ std::string path() const;
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.read.overload1 read]``(
- SyncReadStream & s,
- const MutableBufferSequence & buffers);
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
- typename CompletionCondition>
- std::size_t ``[link boost_asio.reference.read.overload2 read]``(
- SyncReadStream & s,
- const MutableBufferSequence & buffers,
- CompletionCondition completion_condition);
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
- typename CompletionCondition>
- std::size_t ``[link boost_asio.reference.read.overload3 read]``(
- SyncReadStream & s,
- const MutableBufferSequence & buffers,
- CompletionCondition completion_condition,
- boost::system::error_code & ec);
+[endsect]
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t ``[link boost_asio.reference.read.overload4 read]``(
- SyncReadStream & s,
- basic_streambuf< Allocator > & b);
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator,
- typename CompletionCondition>
- std::size_t ``[link boost_asio.reference.read.overload5 read]``(
- SyncReadStream & s,
- basic_streambuf< Allocator > & b,
- CompletionCondition completion_condition);
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator,
- typename CompletionCondition>
- std::size_t ``[link boost_asio.reference.read.overload6 read]``(
- SyncReadStream & s,
- basic_streambuf< Allocator > & b,
- CompletionCondition completion_condition,
- boost::system::error_code & ec);
+[section:overload2 local::basic_endpoint::path (2 of 3 overloads)]
 
+Set the path associated with the endpoint.
 
-[section:overload1 read (1 of 6 overloads)]
+ void path(
+ const char * p);
 
-Attempt to read a certain amount of data from a stream before returning.
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t read(
- SyncReadStream & s,
- const MutableBufferSequence & buffers);
 
+[endsect]
 
-This function is used to read a certain number of bytes of data from a stream. The call will block until one of the following conditions is true:
 
 
-* The supplied buffers are full. That is, the bytes transferred is equal to the sum of the buffer sizes.
+[section:overload3 local::basic_endpoint::path (3 of 3 overloads)]
 
-* An error occurred.
+Set the path associated with the endpoint.
 
-This operation is implemented in terms of one or more calls to the stream's read\_some function.
+ void path(
+ const std::string & p);
 
 
-[heading Parameters]
-
 
-[variablelist
-
-[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+[endsect]
 
-[[buffers][One or more buffers into which the data will be read. The sum of the buffer sizes indicates the maximum number of bytes to read from the stream.]]
 
-]
+[endsect]
 
-[heading Return Value]
-
-The number of bytes transferred.
 
-[heading Exceptions]
-
+[section:protocol local::basic_endpoint::protocol]
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
+The protocol associated with the endpoint.
 
-]
+ protocol_type protocol() const;
 
-[heading Example]
-
-To read into a single data buffer use the
-[link boost_asio.reference.buffer buffer] function as follows:
 
- boost::asio::read(s, boost::asio::buffer(data, size));
 
+[endsect]
 
-See the
-[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
-[heading Remarks]
-
-This overload is equivalent to calling:
 
- boost::asio::read(
- s, buffers,
- boost::asio::transfer_all());
+[section:protocol_type local::basic_endpoint::protocol_type]
 
+The protocol type associated with the endpoint.
 
+ typedef Protocol protocol_type;
 
 
 
@@ -31741,78 +32966,66 @@
 
 
 
-[section:overload2 read (2 of 6 overloads)]
+[section:resize local::basic_endpoint::resize]
 
-Attempt to read a certain amount of data from a stream before returning.
+Set the underlying size of the endpoint in the native type.
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
- typename CompletionCondition>
- std::size_t read(
- SyncReadStream & s,
- const MutableBufferSequence & buffers,
- CompletionCondition completion_condition);
+ void resize(
+ std::size_t size);
 
 
-This function is used to read a certain number of bytes of data from a stream. The call will block until one of the following conditions is true:
 
+[endsect]
 
-* The supplied buffers are full. That is, the bytes transferred is equal to the sum of the buffer sizes.
 
-* The completion_condition function object returns true.
 
-This operation is implemented in terms of one or more calls to the stream's read\_some function.
+[section:size local::basic_endpoint::size]
 
+Get the underlying size of the endpoint in the native type.
 
-[heading Parameters]
-
+ std::size_t size() const;
 
-[variablelist
-
-[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
 
-[[buffers][One or more buffers into which the data will be read. The sum of the buffer sizes indicates the maximum number of bytes to read from the stream.]]
 
-[[completion_condition][The function object to be called to determine whether the read operation is complete. The signature of the function object must be:
-``
- bool completion_condition(
- const boost::system::error_code& error, // Result of latest read_some
- // operation.
+[endsect]
 
- std::size_t bytes_transferred // Number of bytes transferred
- // so far.
- );
 
-``
-A return value of true indicates that the read operation is complete. False indicates that further calls to the stream's read\_some function are required.]]
 
-]
+[endsect]
 
-[heading Return Value]
-
-The number of bytes transferred.
+[section:local__connect_pair local::connect_pair]
 
-[heading Exceptions]
-
+Create a pair of connected sockets.
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``,
+ typename ``[link boost_asio.reference.SocketService1 SocketService1]``,
+ typename ``[link boost_asio.reference.SocketService2 SocketService2]``>
+ void ``[link boost_asio.reference.local__connect_pair.overload1 connect_pair]``(
+ basic_socket< Protocol, SocketService1 > & socket1,
+ basic_socket< Protocol, SocketService2 > & socket2);
 
-]
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``,
+ typename ``[link boost_asio.reference.SocketService1 SocketService1]``,
+ typename ``[link boost_asio.reference.SocketService2 SocketService2]``>
+ boost::system::error_code ``[link boost_asio.reference.local__connect_pair.overload2 connect_pair]``(
+ basic_socket< Protocol, SocketService1 > & socket1,
+ basic_socket< Protocol, SocketService2 > & socket2,
+ boost::system::error_code & ec);
 
-[heading Example]
-
-To read into a single data buffer use the
-[link boost_asio.reference.buffer buffer] function as follows:
 
- boost::asio::read(s, boost::asio::buffer(data, size),
- boost::asio::transfer_at_least(32));
+[section:overload1 local::connect_pair (1 of 2 overloads)]
 
+Create a pair of connected sockets.
 
-See the
-[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``,
+ typename ``[link boost_asio.reference.SocketService1 SocketService1]``,
+ typename ``[link boost_asio.reference.SocketService2 SocketService2]``>
+ void connect_pair(
+ basic_socket< Protocol, SocketService1 > & socket1,
+ basic_socket< Protocol, SocketService2 > & socket2);
 
 
 
@@ -31820,120 +33033,200 @@
 
 
 
-[section:overload3 read (3 of 6 overloads)]
+[section:overload2 local::connect_pair (2 of 2 overloads)]
 
-Attempt to read a certain amount of data from a stream before returning.
+Create a pair of connected sockets.
 
   template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
- typename CompletionCondition>
- std::size_t read(
- SyncReadStream & s,
- const MutableBufferSequence & buffers,
- CompletionCondition completion_condition,
+ typename ``[link boost_asio.reference.Protocol Protocol]``,
+ typename ``[link boost_asio.reference.SocketService1 SocketService1]``,
+ typename ``[link boost_asio.reference.SocketService2 SocketService2]``>
+ boost::system::error_code connect_pair(
+ basic_socket< Protocol, SocketService1 > & socket1,
+ basic_socket< Protocol, SocketService2 > & socket2,
       boost::system::error_code & ec);
 
 
-This function is used to read a certain number of bytes of data from a stream. The call will block until one of the following conditions is true:
 
+[endsect]
 
-* The supplied buffers are full. That is, the bytes transferred is equal to the sum of the buffer sizes.
 
-* The completion_condition function object returns true.
+[endsect]
 
-This operation is implemented in terms of one or more calls to the stream's read\_some function.
+[section:local__datagram_protocol local::datagram_protocol]
 
+Encapsulates the flags needed for datagram-oriented UNIX sockets.
 
-[heading Parameters]
-
+ class datagram_protocol
 
-[variablelist
-
-[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
 
-[[buffers][One or more buffers into which the data will be read. The sum of the buffer sizes indicates the maximum number of bytes to read from the stream.]]
+[heading Types]
+[table
+ [[Name][Description]]
 
-[[completion_condition][The function object to be called to determine whether the read operation is complete. The signature of the function object must be:
-``
- bool completion_condition(
- const boost::system::error_code& error, // Result of latest read_some
- // operation.
+ [
 
- std::size_t bytes_transferred // Number of bytes transferred
- // so far.
- );
+ [[link boost_asio.reference.local__datagram_protocol.endpoint [*endpoint]]]
+ [The type of a UNIX domain endpoint. ]
+
+ ]
 
-``
-A return value of true indicates that the read operation is complete. False indicates that further calls to the stream's read\_some function are required.]]
+ [
 
-[[ec][Set to indicate what error occurred, if any.]]
+ [[link boost_asio.reference.local__datagram_protocol.socket [*socket]]]
+ [The UNIX domain socket type. ]
+
+ ]
 
 ]
 
-[heading Return Value]
-
-The number of bytes read. If an error occurs, returns the total number of bytes successfully transferred prior to the error.
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.local__datagram_protocol.family [*family]]]
+ [Obtain an identifier for the protocol family. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__datagram_protocol.protocol [*protocol]]]
+ [Obtain an identifier for the protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__datagram_protocol.type [*type]]]
+ [Obtain an identifier for the type of the protocol. ]
+ ]
+
+]
 
+The
+[link boost_asio.reference.local__datagram_protocol local::datagram_protocol] class contains flags necessary for datagram-oriented UNIX domain sockets.
 
-[endsect]
 
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
 
+[*Shared] [*objects:] Safe.
 
-[section:overload4 read (4 of 6 overloads)]
 
-Attempt to read a certain amount of data from a stream before returning.
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t read(
- SyncReadStream & s,
- basic_streambuf< Allocator > & b);
+[section:endpoint local::datagram_protocol::endpoint]
 
+The type of a UNIX domain endpoint.
 
-This function is used to read a certain number of bytes of data from a stream. The call will block until one of the following conditions is true:
+ typedef basic_endpoint< datagram_protocol > endpoint;
 
 
-* An error occurred.
+[heading Types]
+[table
+ [[Name][Description]]
 
-This operation is implemented in terms of one or more calls to the stream's read\_some function.
+ [
 
+ [[link boost_asio.reference.local__basic_endpoint.data_type [*data_type]]]
+ [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
+
+ ]
 
-[heading Parameters]
-
+ [
 
-[variablelist
+ [[link boost_asio.reference.local__basic_endpoint.protocol_type [*protocol_type]]]
+ [The protocol type associated with the endpoint. ]
   
-[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
-
-[[b][The basic\_streambuf object into which the data will be read.]]
+ ]
 
 ]
 
-[heading Return Value]
-
-The number of bytes transferred.
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
-[heading Exceptions]
-
+ [
+ [[link boost_asio.reference.local__basic_endpoint.basic_endpoint [*basic_endpoint]]]
+ [Default constructor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.capacity [*capacity]]]
+ [Get the capacity of the endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.data [*data]]]
+ [Get the underlying endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_eq_ [*operator=]]]
+ [Assign from another endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.path [*path]]]
+ [Get the path associated with the endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.protocol [*protocol]]]
+ [The protocol associated with the endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.resize [*resize]]]
+ [Set the underlying size of the endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.size [*size]]]
+ [Get the underlying size of the endpoint in the native type. ]
+ ]
+
+]
 
-[variablelist
+[heading Friends]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_not__eq_ [*operator!=]]]
+ [Compare two endpoints for inequality. ]
+ ]
   
-[[boost::system::system_error][Thrown on failure.]]
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_lt_ [*operator<]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_eq__eq_ [*operator==]]]
+ [Compare two endpoints for equality. ]
+ ]
+
+]
+
+[heading Related Functions]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_lt__lt_ [*operator<<]]]
+ [Output an endpoint as a string. ]
+ ]
+
 ]
 
-[heading Remarks]
-
-This overload is equivalent to calling:
+The
+[link boost_asio.reference.local__basic_endpoint local::basic_endpoint] class template describes an endpoint that may be associated with a particular UNIX socket.
 
- boost::asio::read(
- s, b,
- boost::asio::transfer_all());
 
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
 
+[*Shared] [*objects:] Unsafe.
 
 
 
@@ -31942,297 +33235,6732 @@
 
 
 
-[section:overload5 read (5 of 6 overloads)]
+[section:family local::datagram_protocol::family]
 
-Attempt to read a certain amount of data from a stream before returning.
+Obtain an identifier for the protocol family.
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator,
- typename CompletionCondition>
- std::size_t read(
- SyncReadStream & s,
- basic_streambuf< Allocator > & b,
- CompletionCondition completion_condition);
+ int family() const;
 
 
-This function is used to read a certain number of bytes of data from a stream. The call will block until one of the following conditions is true:
 
+[endsect]
 
-* The completion_condition function object returns true.
 
-This operation is implemented in terms of one or more calls to the stream's read\_some function.
 
+[section:protocol local::datagram_protocol::protocol]
 
-[heading Parameters]
-
+Obtain an identifier for the protocol.
 
-[variablelist
-
-[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+ int protocol() const;
 
-[[b][The basic\_streambuf object into which the data will be read.]]
 
-[[completion_condition][The function object to be called to determine whether the read operation is complete. The signature of the function object must be:
-``
- bool completion_condition(
- const boost::system::error_code& error, // Result of latest read_some
- // operation.
 
- std::size_t bytes_transferred // Number of bytes transferred
- // so far.
- );
+[endsect]
 
-``
-A return value of true indicates that the read operation is complete. False indicates that further calls to the stream's read\_some function are required.]]
+
+
+[section:socket local::datagram_protocol::socket]
+
+The UNIX domain socket type.
+
+ typedef basic_datagram_socket< datagram_protocol > socket;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.broadcast [*broadcast]]]
+ [Socket option to permit sending of broadcast messages. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.debug [*debug]]]
+ [Socket option to enable socket-level debugging. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.do_not_route [*do_not_route]]]
+ [Socket option to prevent routing, use local interfaces only. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.enable_connection_aborted [*enable_connection_aborted]]]
+ [Socket option to report aborted connections on accept. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.keep_alive [*keep_alive]]]
+ [Socket option to send keep-alives. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.linger [*linger]]]
+ [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_socket is always the lowest layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.message_flags [*message_flags]]]
+ [Bitmask type for flags that can be passed to send and receive operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.native_type [*native_type]]]
+ [The native representation of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.protocol_type [*protocol_type]]]
+ [The protocol type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.receive_buffer_size [*receive_buffer_size]]]
+ [Socket option for the receive buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.receive_low_watermark [*receive_low_watermark]]]
+ [Socket option for the receive low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.reuse_address [*reuse_address]]]
+ [Socket option to allow the socket to be bound to an address that is already in use. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.send_buffer_size [*send_buffer_size]]]
+ [Socket option for the send buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.send_low_watermark [*send_low_watermark]]]
+ [Socket option for the send low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.shutdown_type [*shutdown_type]]]
+ [Different ways a socket may be shutdown. ]
+
+ ]
 
 ]
 
-[heading Return Value]
-
-The number of bytes transferred.
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
-[heading Exceptions]
-
+ [
+ [[link boost_asio.reference.basic_datagram_socket.assign [*assign]]]
+ [Assign an existing native socket to the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.async_connect [*async_connect]]]
+ [Start an asynchronous connect. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.async_receive [*async_receive]]]
+ [Start an asynchronous receive on a connected socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.async_receive_from [*async_receive_from]]]
+ [Start an asynchronous receive. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.async_send [*async_send]]]
+ [Start an asynchronous send on a connected socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.async_send_to [*async_send_to]]]
+ [Start an asynchronous send. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.at_mark [*at_mark]]]
+ [Determine whether the socket is at the out-of-band data mark. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.available [*available]]]
+ [Determine the number of bytes available for reading. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.basic_datagram_socket [*basic_datagram_socket]]]
+ [Construct a basic_datagram_socket without opening it. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.bind [*bind]]]
+ [Bind the socket to the given local endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.close [*close]]]
+ [Close the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.connect [*connect]]]
+ [Connect the socket to the specified endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.get_option [*get_option]]]
+ [Get an option from the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.io_control [*io_control]]]
+ [Perform an IO control command on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.is_open [*is_open]]]
+ [Determine whether the socket is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.local_endpoint [*local_endpoint]]]
+ [Get the local endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.native [*native]]]
+ [Get the native socket representation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.open [*open]]]
+ [Open the socket using the specified protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.receive [*receive]]]
+ [Receive some data on a connected socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.receive_from [*receive_from]]]
+ [Receive a datagram with the endpoint of the sender. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.remote_endpoint [*remote_endpoint]]]
+ [Get the remote endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.send [*send]]]
+ [Send some data on a connected socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.send_to [*send_to]]]
+ [Send a datagram to the specified endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.set_option [*set_option]]]
+ [Set an option on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.shutdown [*shutdown]]]
+ [Disable sends or receives on the socket. ]
+ ]
+
+]
 
-[variablelist
+[heading Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.max_connections [*max_connections]]]
+ [The maximum length of the queue of pending incoming connections. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.message_do_not_route [*message_do_not_route]]]
+ [Specify that the data should not be subject to routing. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.message_out_of_band [*message_out_of_band]]]
+ [Process out-of-band data. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.message_peek [*message_peek]]]
+ [Peek at incoming data without removing it from the input queue. ]
+ ]
+
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
+The basic_datagram_socket class template provides asynchronous and blocking datagram-oriented socket functionality.
+
+
+[heading Thread Safety]
   
-[[boost::system::system_error][Thrown on failure. ]]
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+
+
+
+[endsect]
+
+
+
+[section:type local::datagram_protocol::type]
+
+Obtain an identifier for the type of the protocol.
+
+ int type() const;
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:local__stream_protocol local::stream_protocol]
+
+Encapsulates the flags needed for stream-oriented UNIX sockets.
+
+ class stream_protocol
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.local__stream_protocol.acceptor [*acceptor]]]
+ [The UNIX domain acceptor type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.local__stream_protocol.endpoint [*endpoint]]]
+ [The type of a UNIX domain endpoint. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.local__stream_protocol.iostream [*iostream]]]
+ [The UNIX domain iostream type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.local__stream_protocol.socket [*socket]]]
+ [The UNIX domain socket type. ]
+
+ ]
+
+]
 
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.local__stream_protocol.family [*family]]]
+ [Obtain an identifier for the protocol family. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__stream_protocol.protocol [*protocol]]]
+ [Obtain an identifier for the protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__stream_protocol.type [*type]]]
+ [Obtain an identifier for the type of the protocol. ]
+ ]
+
 ]
 
+The
+[link boost_asio.reference.local__stream_protocol local::stream_protocol] class contains flags necessary for stream-oriented UNIX domain sockets.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Safe.
+
+
+
+[section:acceptor local::stream_protocol::acceptor]
+
+The UNIX domain acceptor type.
+
+ typedef basic_socket_acceptor< stream_protocol > acceptor;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.broadcast [*broadcast]]]
+ [Socket option to permit sending of broadcast messages. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.debug [*debug]]]
+ [Socket option to enable socket-level debugging. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.do_not_route [*do_not_route]]]
+ [Socket option to prevent routing, use local interfaces only. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.enable_connection_aborted [*enable_connection_aborted]]]
+ [Socket option to report aborted connections on accept. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.keep_alive [*keep_alive]]]
+ [Socket option to send keep-alives. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.linger [*linger]]]
+ [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.message_flags [*message_flags]]]
+ [Bitmask type for flags that can be passed to send and receive operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.native_type [*native_type]]]
+ [The native representation of an acceptor. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.protocol_type [*protocol_type]]]
+ [The protocol type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.receive_buffer_size [*receive_buffer_size]]]
+ [Socket option for the receive buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.receive_low_watermark [*receive_low_watermark]]]
+ [Socket option for the receive low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.reuse_address [*reuse_address]]]
+ [Socket option to allow the socket to be bound to an address that is already in use. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.send_buffer_size [*send_buffer_size]]]
+ [Socket option for the send buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.send_low_watermark [*send_low_watermark]]]
+ [Socket option for the send low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.shutdown_type [*shutdown_type]]]
+ [Different ways a socket may be shutdown. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.accept [*accept]]]
+ [Accept a new connection. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.assign [*assign]]]
+ [Assigns an existing native acceptor to the acceptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.async_accept [*async_accept]]]
+ [Start an asynchronous accept. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.basic_socket_acceptor [*basic_socket_acceptor]]]
+ [Construct an acceptor without opening it. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.bind [*bind]]]
+ [Bind the acceptor to the given local endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the acceptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.close [*close]]]
+ [Close the acceptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.get_option [*get_option]]]
+ [Get an option from the acceptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.is_open [*is_open]]]
+ [Determine whether the acceptor is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.listen [*listen]]]
+ [Place the acceptor into the state where it will listen for new connections. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.local_endpoint [*local_endpoint]]]
+ [Get the local endpoint of the acceptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.native [*native]]]
+ [Get the native acceptor representation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.open [*open]]]
+ [Open the acceptor using the specified protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.set_option [*set_option]]]
+ [Set an option on the acceptor. ]
+ ]
+
+]
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.max_connections [*max_connections]]]
+ [The maximum length of the queue of pending incoming connections. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.message_do_not_route [*message_do_not_route]]]
+ [Specify that the data should not be subject to routing. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.message_out_of_band [*message_out_of_band]]]
+ [Process out-of-band data. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.message_peek [*message_peek]]]
+ [Peek at incoming data without removing it from the input queue. ]
+ ]
+
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
+The basic_socket_acceptor class template is used for accepting new socket connections.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+[heading Example]
+
+Opening a socket acceptor with the SO\_REUSEADDR option enabled:
+
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
+ boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::tcp::v4(), port);
+ acceptor.open(endpoint.protocol());
+ acceptor.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true));
+ acceptor.bind(endpoint);
+ acceptor.listen();
+
+
+
+
+
+
+
+[endsect]
+
+
+
+[section:endpoint local::stream_protocol::endpoint]
+
+The type of a UNIX domain endpoint.
+
+ typedef basic_endpoint< stream_protocol > endpoint;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.local__basic_endpoint.data_type [*data_type]]]
+ [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.local__basic_endpoint.protocol_type [*protocol_type]]]
+ [The protocol type associated with the endpoint. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.basic_endpoint [*basic_endpoint]]]
+ [Default constructor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.capacity [*capacity]]]
+ [Get the capacity of the endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.data [*data]]]
+ [Get the underlying endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_eq_ [*operator=]]]
+ [Assign from another endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.path [*path]]]
+ [Get the path associated with the endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.protocol [*protocol]]]
+ [The protocol associated with the endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.resize [*resize]]]
+ [Set the underlying size of the endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.size [*size]]]
+ [Get the underlying size of the endpoint in the native type. ]
+ ]
+
+]
+
+[heading Friends]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_not__eq_ [*operator!=]]]
+ [Compare two endpoints for inequality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_lt_ [*operator<]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_eq__eq_ [*operator==]]]
+ [Compare two endpoints for equality. ]
+ ]
+
+]
+
+[heading Related Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_lt__lt_ [*operator<<]]]
+ [Output an endpoint as a string. ]
+ ]
+
+]
+
+The
+[link boost_asio.reference.local__basic_endpoint local::basic_endpoint] class template describes an endpoint that may be associated with a particular UNIX socket.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+
+
+
+[endsect]
+
+
+
+[section:family local::stream_protocol::family]
+
+Obtain an identifier for the protocol family.
+
+ int family() const;
+
+
+
+[endsect]
+
+
+
+[section:iostream local::stream_protocol::iostream]
+
+The UNIX domain iostream type.
+
+ typedef basic_socket_iostream< stream_protocol > iostream;
+
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_socket_iostream.basic_socket_iostream [*basic_socket_iostream]]]
+ [Construct a basic_socket_iostream without establishing a connection. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_iostream.close [*close]]]
+ [Close the connection. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_iostream.connect [*connect]]]
+ [Establish a connection to an endpoint corresponding to a resolver query. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_iostream.rdbuf [*rdbuf]]]
+ [Return a pointer to the underlying streambuf. ]
+ ]
+
+]
+
+
+
+[endsect]
+
+
+
+[section:protocol local::stream_protocol::protocol]
+
+Obtain an identifier for the protocol.
+
+ int protocol() const;
+
+
+
+[endsect]
+
+
+
+[section:socket local::stream_protocol::socket]
+
+The UNIX domain socket type.
+
+ typedef basic_stream_socket< stream_protocol > socket;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.broadcast [*broadcast]]]
+ [Socket option to permit sending of broadcast messages. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.debug [*debug]]]
+ [Socket option to enable socket-level debugging. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.do_not_route [*do_not_route]]]
+ [Socket option to prevent routing, use local interfaces only. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.enable_connection_aborted [*enable_connection_aborted]]]
+ [Socket option to report aborted connections on accept. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.keep_alive [*keep_alive]]]
+ [Socket option to send keep-alives. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.linger [*linger]]]
+ [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_socket is always the lowest layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.message_flags [*message_flags]]]
+ [Bitmask type for flags that can be passed to send and receive operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.native_type [*native_type]]]
+ [The native representation of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.protocol_type [*protocol_type]]]
+ [The protocol type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.receive_buffer_size [*receive_buffer_size]]]
+ [Socket option for the receive buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.receive_low_watermark [*receive_low_watermark]]]
+ [Socket option for the receive low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.reuse_address [*reuse_address]]]
+ [Socket option to allow the socket to be bound to an address that is already in use. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.send_buffer_size [*send_buffer_size]]]
+ [Socket option for the send buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.send_low_watermark [*send_low_watermark]]]
+ [Socket option for the send low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.shutdown_type [*shutdown_type]]]
+ [Different ways a socket may be shutdown. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.assign [*assign]]]
+ [Assign an existing native socket to the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.async_connect [*async_connect]]]
+ [Start an asynchronous connect. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.async_read_some [*async_read_some]]]
+ [Start an asynchronous read. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.async_receive [*async_receive]]]
+ [Start an asynchronous receive. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.async_send [*async_send]]]
+ [Start an asynchronous send. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.async_write_some [*async_write_some]]]
+ [Start an asynchronous write. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.at_mark [*at_mark]]]
+ [Determine whether the socket is at the out-of-band data mark. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.available [*available]]]
+ [Determine the number of bytes available for reading. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.basic_stream_socket [*basic_stream_socket]]]
+ [Construct a basic_stream_socket without opening it. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.bind [*bind]]]
+ [Bind the socket to the given local endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.close [*close]]]
+ [Close the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.connect [*connect]]]
+ [Connect the socket to the specified endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.get_option [*get_option]]]
+ [Get an option from the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.io_control [*io_control]]]
+ [Perform an IO control command on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.is_open [*is_open]]]
+ [Determine whether the socket is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.local_endpoint [*local_endpoint]]]
+ [Get the local endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.native [*native]]]
+ [Get the native socket representation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.open [*open]]]
+ [Open the socket using the specified protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.read_some [*read_some]]]
+ [Read some data from the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.receive [*receive]]]
+ [Receive some data on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.remote_endpoint [*remote_endpoint]]]
+ [Get the remote endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.send [*send]]]
+ [Send some data on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.set_option [*set_option]]]
+ [Set an option on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.shutdown [*shutdown]]]
+ [Disable sends or receives on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.write_some [*write_some]]]
+ [Write some data to the socket. ]
+ ]
+
+]
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.max_connections [*max_connections]]]
+ [The maximum length of the queue of pending incoming connections. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.message_do_not_route [*message_do_not_route]]]
+ [Specify that the data should not be subject to routing. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.message_out_of_band [*message_out_of_band]]]
+ [Process out-of-band data. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.message_peek [*message_peek]]]
+ [Peek at incoming data without removing it from the input queue. ]
+ ]
+
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
+The basic_stream_socket class template provides asynchronous and blocking stream-oriented socket functionality.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+
+
+
+[endsect]
+
+
+
+[section:type local::stream_protocol::type]
+
+Obtain an identifier for the type of the protocol.
+
+ int type() const;
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:mutable_buffer mutable_buffer]
+
+Holds a buffer that can be modified.
+
+ class mutable_buffer
+
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.mutable_buffer.mutable_buffer [*mutable_buffer]]]
+ [Construct an empty buffer. ]
+ ]
+
+]
+
+[heading Related Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.mutable_buffer.buffer_cast [*buffer_cast]]]
+ [Cast a non-modifiable buffer to a specified pointer to POD type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.mutable_buffer.buffer_size [*buffer_size]]]
+ [Get the number of bytes in a non-modifiable buffer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.mutable_buffer.operator_plus_ [*operator+]]]
+ [Create a new modifiable buffer that is offset from the start of another. ]
+ ]
+
+]
+
+The mutable_buffer class provides a safe representation of a buffer that can be modified. It does not own the underlying data, and so is cheap to copy or assign.
+
+
+[section:buffer_cast mutable_buffer::buffer_cast]
+
+Cast a non-modifiable buffer to a specified pointer to POD type.
+
+ template<
+ typename ``[link boost_asio.reference.PointerToPodType PointerToPodType]``>
+ PointerToPodType buffer_cast(
+ const mutable_buffer & b);
+
+
+
+[endsect]
+
+
+
+[section:buffer_size mutable_buffer::buffer_size]
+
+Get the number of bytes in a non-modifiable buffer.
+
+ std::size_t buffer_size(
+ const mutable_buffer & b);
+
+
+
+[endsect]
+
+
+[section:mutable_buffer mutable_buffer::mutable_buffer]
+
+Construct an empty buffer.
+
+ ``[link boost_asio.reference.mutable_buffer.mutable_buffer.overload1 mutable_buffer]``();
+
+ ``[link boost_asio.reference.mutable_buffer.mutable_buffer.overload2 mutable_buffer]``(
+ void * data,
+ std::size_t size);
+
+
+[section:overload1 mutable_buffer::mutable_buffer (1 of 2 overloads)]
+
+Construct an empty buffer.
+
+ mutable_buffer();
+
+
+
+[endsect]
+
+
+
+[section:overload2 mutable_buffer::mutable_buffer (2 of 2 overloads)]
+
+Construct a buffer to represent a given memory range.
+
+ mutable_buffer(
+ void * data,
+ std::size_t size);
+
+
+
+[endsect]
+
+
+[endsect]
+
+[section:operator_plus_ mutable_buffer::operator+]
+
+Create a new modifiable buffer that is offset from the start of another.
+
+ mutable_buffer ``[link boost_asio.reference.mutable_buffer.operator_plus_.overload1 operator+]``(
+ const mutable_buffer & b,
+ std::size_t start);
+
+ mutable_buffer ``[link boost_asio.reference.mutable_buffer.operator_plus_.overload2 operator+]``(
+ std::size_t start,
+ const mutable_buffer & b);
+
+
+[section:overload1 mutable_buffer::operator+ (1 of 2 overloads)]
+
+Create a new modifiable buffer that is offset from the start of another.
+
+ mutable_buffer operator+(
+ const mutable_buffer & b,
+ std::size_t start);
+
+
+
+[endsect]
+
+
+
+[section:overload2 mutable_buffer::operator+ (2 of 2 overloads)]
+
+Create a new modifiable buffer that is offset from the start of another.
+
+ mutable_buffer operator+(
+ std::size_t start,
+ const mutable_buffer & b);
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[endsect]
+
+[section:mutable_buffers_1 mutable_buffers_1]
+
+Adapts a single modifiable buffer so that it meets the requirements of the MutableBufferSequence concept.
+
+ class mutable_buffers_1 :
+ public mutable_buffer
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.mutable_buffers_1.const_iterator [*const_iterator]]]
+ [A random-access iterator type that may be used to read elements. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.mutable_buffers_1.value_type [*value_type]]]
+ [The type for each element in the list of buffers. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.mutable_buffers_1.begin [*begin]]]
+ [Get a random-access iterator to the first element. ]
+ ]
+
+ [
+ [[link boost_asio.reference.mutable_buffers_1.end [*end]]]
+ [Get a random-access iterator for one past the last element. ]
+ ]
+
+ [
+ [[link boost_asio.reference.mutable_buffers_1.mutable_buffers_1 [*mutable_buffers_1]]]
+ [Construct to represent a single modifiable buffer. ]
+ ]
+
+]
+
+[heading Related Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.mutable_buffers_1.buffer_cast [*buffer_cast]]]
+ [Cast a non-modifiable buffer to a specified pointer to POD type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.mutable_buffers_1.buffer_size [*buffer_size]]]
+ [Get the number of bytes in a non-modifiable buffer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.mutable_buffers_1.operator_plus_ [*operator+]]]
+ [Create a new modifiable buffer that is offset from the start of another. ]
+ ]
+
+]
+
+
+[section:begin mutable_buffers_1::begin]
+
+Get a random-access iterator to the first element.
+
+ const_iterator begin() const;
+
+
+
+[endsect]
+
+
+
+[section:buffer_cast mutable_buffers_1::buffer_cast]
+
+
+['Inherited from mutable_buffer.]
+
+Cast a non-modifiable buffer to a specified pointer to POD type.
+
+ template<
+ typename ``[link boost_asio.reference.PointerToPodType PointerToPodType]``>
+ PointerToPodType buffer_cast(
+ const mutable_buffer & b);
+
+
+
+[endsect]
+
+
+
+[section:buffer_size mutable_buffers_1::buffer_size]
+
+
+['Inherited from mutable_buffer.]
+
+Get the number of bytes in a non-modifiable buffer.
+
+ std::size_t buffer_size(
+ const mutable_buffer & b);
+
+
+
+[endsect]
+
+
+
+[section:const_iterator mutable_buffers_1::const_iterator]
+
+A random-access iterator type that may be used to read elements.
+
+ typedef const mutable_buffer * const_iterator;
+
+
+
+
+[endsect]
+
+
+
+[section:end mutable_buffers_1::end]
+
+Get a random-access iterator for one past the last element.
+
+ const_iterator end() const;
+
+
+
+[endsect]
+
+
+
+[section:mutable_buffers_1 mutable_buffers_1::mutable_buffers_1]
+
+Construct to represent a single modifiable buffer.
+
+ mutable_buffers_1(
+ const mutable_buffer & b);
+
+
+
+[endsect]
+
+
+[section:operator_plus_ mutable_buffers_1::operator+]
+
+Create a new modifiable buffer that is offset from the start of another.
+
+ mutable_buffer ``[link boost_asio.reference.mutable_buffers_1.operator_plus_.overload1 operator+]``(
+ const mutable_buffer & b,
+ std::size_t start);
+
+ mutable_buffer ``[link boost_asio.reference.mutable_buffers_1.operator_plus_.overload2 operator+]``(
+ std::size_t start,
+ const mutable_buffer & b);
+
+
+[section:overload1 mutable_buffers_1::operator+ (1 of 2 overloads)]
+
+
+['Inherited from mutable_buffer.]
+
+Create a new modifiable buffer that is offset from the start of another.
+
+ mutable_buffer operator+(
+ const mutable_buffer & b,
+ std::size_t start);
+
+
+
+[endsect]
+
+
+
+[section:overload2 mutable_buffers_1::operator+ (2 of 2 overloads)]
+
+
+['Inherited from mutable_buffer.]
+
+Create a new modifiable buffer that is offset from the start of another.
+
+ mutable_buffer operator+(
+ std::size_t start,
+ const mutable_buffer & b);
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:value_type mutable_buffers_1::value_type]
+
+The type for each element in the list of buffers.
+
+ typedef mutable_buffer value_type;
+
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.mutable_buffer.mutable_buffer [*mutable_buffer]]]
+ [Construct an empty buffer. ]
+ ]
+
+]
+
+[heading Related Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.mutable_buffer.buffer_cast [*buffer_cast]]]
+ [Cast a non-modifiable buffer to a specified pointer to POD type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.mutable_buffer.buffer_size [*buffer_size]]]
+ [Get the number of bytes in a non-modifiable buffer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.mutable_buffer.operator_plus_ [*operator+]]]
+ [Create a new modifiable buffer that is offset from the start of another. ]
+ ]
+
+]
+
+The mutable_buffer class provides a safe representation of a buffer that can be modified. It does not own the underlying data, and so is cheap to copy or assign.
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:null_buffers null_buffers]
+
+An implementation of both the ConstBufferSequence and MutableBufferSequence concepts to represent a null buffer sequence.
+
+ class null_buffers
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.null_buffers.const_iterator [*const_iterator]]]
+ [A random-access iterator type that may be used to read elements. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.null_buffers.value_type [*value_type]]]
+ [The type for each element in the list of buffers. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.null_buffers.begin [*begin]]]
+ [Get a random-access iterator to the first element. ]
+ ]
+
+ [
+ [[link boost_asio.reference.null_buffers.end [*end]]]
+ [Get a random-access iterator for one past the last element. ]
+ ]
+
+]
+
+
+[section:begin null_buffers::begin]
+
+Get a random-access iterator to the first element.
+
+ const_iterator begin() const;
+
+
+
+[endsect]
+
+
+
+[section:const_iterator null_buffers::const_iterator]
+
+A random-access iterator type that may be used to read elements.
+
+ typedef const mutable_buffer * const_iterator;
+
+
+
+
+[endsect]
+
+
+
+[section:end null_buffers::end]
+
+Get a random-access iterator for one past the last element.
+
+ const_iterator end() const;
+
+
+
+[endsect]
+
+
+
+[section:value_type null_buffers::value_type]
+
+The type for each element in the list of buffers.
+
+ typedef mutable_buffer value_type;
+
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.mutable_buffer.mutable_buffer [*mutable_buffer]]]
+ [Construct an empty buffer. ]
+ ]
+
+]
+
+[heading Related Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.mutable_buffer.buffer_cast [*buffer_cast]]]
+ [Cast a non-modifiable buffer to a specified pointer to POD type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.mutable_buffer.buffer_size [*buffer_size]]]
+ [Get the number of bytes in a non-modifiable buffer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.mutable_buffer.operator_plus_ [*operator+]]]
+ [Create a new modifiable buffer that is offset from the start of another. ]
+ ]
+
+]
+
+The mutable_buffer class provides a safe representation of a buffer that can be modified. It does not own the underlying data, and so is cheap to copy or assign.
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+
+[section:placeholders__bytes_transferred placeholders::bytes_transferred]
+
+An argument placeholder, for use with boost::bind(), that corresponds to the bytes_transferred argument of a handler for asynchronous functions such as boost::asio::basic_stream_socket::async_write_some or boost::asio::async_write.
+
+ unspecified bytes_transferred;
+
+
+
+[endsect]
+
+
+
+[section:placeholders__error placeholders::error]
+
+An argument placeholder, for use with boost::bind(), that corresponds to the error argument of a handler for any of the asynchronous functions.
+
+ unspecified error;
+
+
+
+[endsect]
+
+
+
+[section:placeholders__iterator placeholders::iterator]
+
+An argument placeholder, for use with boost::bind(), that corresponds to the iterator argument of a handler for asynchronous functions such as boost::asio::basic_resolver::resolve.
+
+ unspecified iterator;
+
+
+
+[endsect]
+
+
+[section:posix__basic_descriptor posix::basic_descriptor]
+
+Provides POSIX descriptor functionality.
+
+ template<
+ typename ``[link boost_asio.reference.DescriptorService DescriptorService]``>
+ class basic_descriptor :
+ public basic_io_object< DescriptorService >,
+ public posix::descriptor_base
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_descriptor.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_descriptor.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_descriptor.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_descriptor is always the lowest layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_descriptor.native_type [*native_type]]]
+ [The native representation of a descriptor. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_descriptor.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the descriptor. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_descriptor.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.assign [*assign]]]
+ [Assign an existing native descriptor to the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.basic_descriptor [*basic_descriptor]]]
+ [Construct a basic_descriptor without opening it. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.close [*close]]]
+ [Close the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.io_control [*io_control]]]
+ [Perform an IO control command on the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.is_open [*is_open]]]
+ [Determine whether the descriptor is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.native [*native]]]
+ [Get the native descriptor representation. ]
+ ]
+
+]
+
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor._basic_descriptor [*~basic_descriptor]]]
+ [Protected destructor to prevent deletion through this type. ]
+ ]
+
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
+The posix::basic_descriptor class template provides the ability to wrap a POSIX descriptor.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+
+[section:assign posix::basic_descriptor::assign]
+
+Assign an existing native descriptor to the descriptor.
+
+ void ``[link boost_asio.reference.posix__basic_descriptor.assign.overload1 assign]``(
+ const native_type & native_descriptor);
+
+ boost::system::error_code ``[link boost_asio.reference.posix__basic_descriptor.assign.overload2 assign]``(
+ const native_type & native_descriptor,
+ boost::system::error_code & ec);
+
+
+[section:overload1 posix::basic_descriptor::assign (1 of 2 overloads)]
+
+Assign an existing native descriptor to the descriptor.
+
+ void assign(
+ const native_type & native_descriptor);
+
+
+
+[endsect]
+
+
+
+[section:overload2 posix::basic_descriptor::assign (2 of 2 overloads)]
+
+Assign an existing native descriptor to the descriptor.
+
+ boost::system::error_code assign(
+ const native_type & native_descriptor,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+[endsect]
+
+[section:basic_descriptor posix::basic_descriptor::basic_descriptor]
+
+Construct a basic_descriptor without opening it.
+
+ ``[link boost_asio.reference.posix__basic_descriptor.basic_descriptor.overload1 basic_descriptor]``(
+ boost::asio::io_service & io_service);
+
+ ``[link boost_asio.reference.posix__basic_descriptor.basic_descriptor.overload2 basic_descriptor]``(
+ boost::asio::io_service & io_service,
+ const native_type & native_descriptor);
+
+
+[section:overload1 posix::basic_descriptor::basic_descriptor (1 of 2 overloads)]
+
+Construct a basic_descriptor without opening it.
+
+ basic_descriptor(
+ boost::asio::io_service & io_service);
+
+
+This constructor creates a descriptor without opening it.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[io_service][The io\_service object that the descriptor will use to dispatch handlers for any asynchronous operations performed on the descriptor. ]]
+
+]
+
+
+
+[endsect]
+
+
+
+[section:overload2 posix::basic_descriptor::basic_descriptor (2 of 2 overloads)]
+
+Construct a basic_descriptor on an existing native descriptor.
+
+ basic_descriptor(
+ boost::asio::io_service & io_service,
+ const native_type & native_descriptor);
+
+
+This constructor creates a descriptor object to hold an existing native descriptor.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[io_service][The io\_service object that the descriptor will use to dispatch handlers for any asynchronous operations performed on the descriptor.]]
+
+[[native_descriptor][A native descriptor.]]
+
+]
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
+
+]
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:bytes_readable posix::basic_descriptor::bytes_readable]
+
+
+['Inherited from posix::descriptor_base.]
+
+IO control command to get the amount of data that can be read without blocking.
+
+ typedef implementation_defined bytes_readable;
+
+
+
+Implements the FIONREAD IO control command.
+
+
+[heading Example]
+
+
+
+ boost::asio::posix::stream_descriptor descriptor(io_service);
+ ...
+ boost::asio::descriptor_base::bytes_readable command(true);
+ descriptor.io_control(command);
+ std::size_t bytes_readable = command.get();
+
+
+
+
+
+
+[endsect]
+
+
+[section:cancel posix::basic_descriptor::cancel]
+
+Cancel all asynchronous operations associated with the descriptor.
+
+ void ``[link boost_asio.reference.posix__basic_descriptor.cancel.overload1 cancel]``();
+
+ boost::system::error_code ``[link boost_asio.reference.posix__basic_descriptor.cancel.overload2 cancel]``(
+ boost::system::error_code & ec);
+
+
+[section:overload1 posix::basic_descriptor::cancel (1 of 2 overloads)]
+
+Cancel all asynchronous operations associated with the descriptor.
+
+ void cancel();
+
+
+This function causes all outstanding asynchronous read or write operations to finish immediately, and the handlers for cancelled operations will be passed the boost::asio::error::operation\_aborted error.
+
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
+
+]
+
+
+
+[endsect]
+
+
+
+[section:overload2 posix::basic_descriptor::cancel (2 of 2 overloads)]
+
+Cancel all asynchronous operations associated with the descriptor.
+
+ boost::system::error_code cancel(
+ boost::system::error_code & ec);
+
+
+This function causes all outstanding asynchronous read or write operations to finish immediately, and the handlers for cancelled operations will be passed the boost::asio::error::operation\_aborted error.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any. ]]
+
+]
+
+
+
+[endsect]
+
+
+[endsect]
+
+[section:close posix::basic_descriptor::close]
+
+Close the descriptor.
+
+ void ``[link boost_asio.reference.posix__basic_descriptor.close.overload1 close]``();
+
+ boost::system::error_code ``[link boost_asio.reference.posix__basic_descriptor.close.overload2 close]``(
+ boost::system::error_code & ec);
+
+
+[section:overload1 posix::basic_descriptor::close (1 of 2 overloads)]
+
+Close the descriptor.
+
+ void close();
+
+
+This function is used to close the descriptor. Any asynchronous read or write operations will be cancelled immediately, and will complete with the boost::asio::error::operation\_aborted error.
+
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
+
+]
+
+
+
+[endsect]
+
+
+
+[section:overload2 posix::basic_descriptor::close (2 of 2 overloads)]
+
+Close the descriptor.
+
+ boost::system::error_code close(
+ boost::system::error_code & ec);
+
+
+This function is used to close the descriptor. Any asynchronous read or write operations will be cancelled immediately, and will complete with the boost::asio::error::operation\_aborted error.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any. ]]
+
+]
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:get_io_service posix::basic_descriptor::get_io_service]
+
+
+['Inherited from basic_io_object.]
+
+Get the io_service associated with the object.
+
+ boost::asio::io_service & get_io_service();
+
+
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
+
+
+[heading Return Value]
+
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
+
+
+
+[endsect]
+
+
+
+[section:implementation posix::basic_descriptor::implementation]
+
+
+['Inherited from basic_io_object.]
+
+The underlying implementation of the I/O object.
+
+ implementation_type implementation;
+
+
+
+[endsect]
+
+
+
+[section:implementation_type posix::basic_descriptor::implementation_type]
+
+
+['Inherited from basic_io_object.]
+
+The underlying implementation type of I/O object.
+
+ typedef service_type::implementation_type implementation_type;
+
+
+
+
+[endsect]
+
+
+[section:io_control posix::basic_descriptor::io_control]
+
+Perform an IO control command on the descriptor.
+
+ template<
+ typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
+ void ``[link boost_asio.reference.posix__basic_descriptor.io_control.overload1 io_control]``(
+ IoControlCommand & command);
+
+ template<
+ typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
+ boost::system::error_code ``[link boost_asio.reference.posix__basic_descriptor.io_control.overload2 io_control]``(
+ IoControlCommand & command,
+ boost::system::error_code & ec);
+
+
+[section:overload1 posix::basic_descriptor::io_control (1 of 2 overloads)]
+
+Perform an IO control command on the descriptor.
+
+ template<
+ typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
+ void io_control(
+ IoControlCommand & command);
+
+
+This function is used to execute an IO control command on the descriptor.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[command][The IO control command to be performed on the descriptor.]]
+
+]
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
+
+[heading Example]
+
+Getting the number of bytes ready to read:
+
+ boost::asio::posix::stream_descriptor descriptor(io_service);
+ ...
+ boost::asio::posix::stream_descriptor::bytes_readable command;
+ descriptor.io_control(command);
+ std::size_t bytes_readable = command.get();
+
+
+
+
+
+
+[endsect]
+
+
+
+[section:overload2 posix::basic_descriptor::io_control (2 of 2 overloads)]
+
+Perform an IO control command on the descriptor.
+
+ template<
+ typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
+ boost::system::error_code io_control(
+ IoControlCommand & command,
+ boost::system::error_code & ec);
+
+
+This function is used to execute an IO control command on the descriptor.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[command][The IO control command to be performed on the descriptor.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+[heading Example]
+
+Getting the number of bytes ready to read:
+
+ boost::asio::posix::stream_descriptor descriptor(io_service);
+ ...
+ boost::asio::posix::stream_descriptor::bytes_readable command;
+ boost::system::error_code ec;
+ descriptor.io_control(command, ec);
+ if (ec)
+ {
+ // An error occurred.
+ }
+ std::size_t bytes_readable = command.get();
+
+
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:io_service posix::basic_descriptor::io_service]
+
+
+['Inherited from basic_io_object.]
+
+(Deprecated: use get_io_service().) Get the io_service associated with the object.
+
+ boost::asio::io_service & io_service();
+
+
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
+
+
+[heading Return Value]
+
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
+
+
+
+[endsect]
+
+
+
+[section:is_open posix::basic_descriptor::is_open]
+
+Determine whether the descriptor is open.
+
+ bool is_open() const;
+
+
+
+[endsect]
+
+
+
+[section:lowest_layer posix::basic_descriptor::lowest_layer]
+
+Get a reference to the lowest layer.
+
+ lowest_layer_type & lowest_layer();
+
+
+This function returns a reference to the lowest layer in a stack of layers. Since a basic_descriptor cannot contain any further layers, it simply returns a reference to itself.
+
+
+[heading Return Value]
+
+A reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
+
+
+
+[endsect]
+
+
+
+[section:lowest_layer_type posix::basic_descriptor::lowest_layer_type]
+
+A basic_descriptor is always the lowest layer.
+
+ typedef basic_descriptor< DescriptorService > lowest_layer_type;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_descriptor.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_descriptor.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_descriptor.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_descriptor is always the lowest layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_descriptor.native_type [*native_type]]]
+ [The native representation of a descriptor. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_descriptor.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the descriptor. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_descriptor.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.assign [*assign]]]
+ [Assign an existing native descriptor to the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.basic_descriptor [*basic_descriptor]]]
+ [Construct a basic_descriptor without opening it. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.close [*close]]]
+ [Close the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.io_control [*io_control]]]
+ [Perform an IO control command on the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.is_open [*is_open]]]
+ [Determine whether the descriptor is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.native [*native]]]
+ [Get the native descriptor representation. ]
+ ]
+
+]
+
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor._basic_descriptor [*~basic_descriptor]]]
+ [Protected destructor to prevent deletion through this type. ]
+ ]
+
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
+The posix::basic_descriptor class template provides the ability to wrap a POSIX descriptor.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+
+
+
+[endsect]
+
+
+
+[section:native posix::basic_descriptor::native]
+
+Get the native descriptor representation.
+
+ native_type native();
+
+
+This function may be used to obtain the underlying representation of the descriptor. This is intended to allow access to native descriptor functionality that is not otherwise provided.
+
+
+[endsect]
+
+
+
+[section:native_type posix::basic_descriptor::native_type]
+
+The native representation of a descriptor.
+
+ typedef DescriptorService::native_type native_type;
+
+
+
+
+[endsect]
+
+
+
+[section:non_blocking_io posix::basic_descriptor::non_blocking_io]
+
+
+['Inherited from posix::descriptor_base.]
+
+IO control command to set the blocking mode of the descriptor.
+
+ typedef implementation_defined non_blocking_io;
+
+
+
+Implements the FIONBIO IO control command.
+
+
+[heading Example]
+
+
+
+ boost::asio::posix::stream_descriptor descriptor(io_service);
+ ...
+ boost::asio::descriptor_base::non_blocking_io command(true);
+ descriptor.io_control(command);
+
+
+
+
+
+
+[endsect]
+
+
+
+[section:service posix::basic_descriptor::service]
+
+
+['Inherited from basic_io_object.]
+
+The service associated with the I/O object.
+
+ service_type & service;
+
+
+
+[endsect]
+
+
+
+[section:service_type posix::basic_descriptor::service_type]
+
+
+['Inherited from basic_io_object.]
+
+The type of the service that will be used to provide I/O operations.
+
+ typedef DescriptorService service_type;
+
+
+
+
+[endsect]
+
+
+
+[section:_basic_descriptor posix::basic_descriptor::~basic_descriptor]
+
+Protected destructor to prevent deletion through this type.
+
+ ~basic_descriptor();
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:posix__basic_stream_descriptor posix::basic_stream_descriptor]
+
+Provides stream-oriented descriptor functionality.
+
+ template<
+ typename ``[link boost_asio.reference.StreamDescriptorService StreamDescriptorService]`` = stream_descriptor_service>
+ class basic_stream_descriptor :
+ public posix::basic_descriptor< StreamDescriptorService >
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_stream_descriptor.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_stream_descriptor.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_stream_descriptor.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_descriptor is always the lowest layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_stream_descriptor.native_type [*native_type]]]
+ [The native representation of a descriptor. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_stream_descriptor.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the descriptor. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_stream_descriptor.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.assign [*assign]]]
+ [Assign an existing native descriptor to the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.async_read_some [*async_read_some]]]
+ [Start an asynchronous read. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.async_write_some [*async_write_some]]]
+ [Start an asynchronous write. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.basic_stream_descriptor [*basic_stream_descriptor]]]
+ [Construct a basic_stream_descriptor without opening it. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.close [*close]]]
+ [Close the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.io_control [*io_control]]]
+ [Perform an IO control command on the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.is_open [*is_open]]]
+ [Determine whether the descriptor is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.native [*native]]]
+ [Get the native descriptor representation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.read_some [*read_some]]]
+ [Read some data from the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.write_some [*write_some]]]
+ [Write some data to the descriptor. ]
+ ]
+
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
+The posix::basic_stream_descriptor class template provides asynchronous and blocking stream-oriented descriptor functionality.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+
+[section:assign posix::basic_stream_descriptor::assign]
+
+Assign an existing native descriptor to the descriptor.
+
+ void ``[link boost_asio.reference.posix__basic_stream_descriptor.assign.overload1 assign]``(
+ const native_type & native_descriptor);
+
+ boost::system::error_code ``[link boost_asio.reference.posix__basic_stream_descriptor.assign.overload2 assign]``(
+ const native_type & native_descriptor,
+ boost::system::error_code & ec);
+
+
+[section:overload1 posix::basic_stream_descriptor::assign (1 of 2 overloads)]
+
+
+['Inherited from posix::basic_descriptor.]
+
+Assign an existing native descriptor to the descriptor.
+
+ void assign(
+ const native_type & native_descriptor);
+
+
+
+[endsect]
+
+
+
+[section:overload2 posix::basic_stream_descriptor::assign (2 of 2 overloads)]
+
+
+['Inherited from posix::basic_descriptor.]
+
+Assign an existing native descriptor to the descriptor.
+
+ boost::system::error_code assign(
+ const native_type & native_descriptor,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:async_read_some posix::basic_stream_descriptor::async_read_some]
+
+Start an asynchronous read.
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_read_some(
+ const MutableBufferSequence & buffers,
+ ReadHandler handler);
+
+
+This function is used to asynchronously read data from the stream descriptor. The function call always returns immediately.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[buffers][One or more buffers into which the data will be read. Although the buffers object may be copied as necessary, ownership of the underlying memory blocks is retained by the caller, which must guarantee that they remain valid until the handler is called.]]
+
+[[handler][The handler to be called when the read operation completes. Copies will be made of the handler as required. The function signature of the handler must be:
+``
+ void handler(
+ const boost::system::error_code& error, // Result of operation.
+ std::size_t bytes_transferred // Number of bytes read.
+ );
+
+``
+Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
+
+]
+
+[heading Remarks]
+
+The read operation may not read all of the requested number of bytes. Consider using the
+[link boost_asio.reference.async_read async_read] function if you need to ensure that the requested amount of data is read before the asynchronous operation completes.
+
+[heading Example]
+
+To read into a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
+
+ descriptor.async_read_some(boost::asio::buffer(data, size), handler);
+
+
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+
+
+
+[endsect]
+
+
+
+[section:async_write_some posix::basic_stream_descriptor::async_write_some]
+
+Start an asynchronous write.
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_write_some(
+ const ConstBufferSequence & buffers,
+ WriteHandler handler);
+
+
+This function is used to asynchronously write data to the stream descriptor. The function call always returns immediately.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[buffers][One or more data buffers to be written to the descriptor. Although the buffers object may be copied as necessary, ownership of the underlying memory blocks is retained by the caller, which must guarantee that they remain valid until the handler is called.]]
+
+[[handler][The handler to be called when the write operation completes. Copies will be made of the handler as required. The function signature of the handler must be:
+``
+ void handler(
+ const boost::system::error_code& error, // Result of operation.
+ std::size_t bytes_transferred // Number of bytes written.
+ );
+
+``
+Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
+
+]
+
+[heading Remarks]
+
+The write operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.async_write async_write] function if you need to ensure that all data is written before the asynchronous operation completes.
+
+[heading Example]
+
+To write a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
+
+ descriptor.async_write_some(boost::asio::buffer(data, size), handler);
+
+
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on writing multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+
+
+
+[endsect]
+
+
+[section:basic_stream_descriptor posix::basic_stream_descriptor::basic_stream_descriptor]
+
+Construct a basic_stream_descriptor without opening it.
+
+ ``[link boost_asio.reference.posix__basic_stream_descriptor.basic_stream_descriptor.overload1 basic_stream_descriptor]``(
+ boost::asio::io_service & io_service);
+
+ ``[link boost_asio.reference.posix__basic_stream_descriptor.basic_stream_descriptor.overload2 basic_stream_descriptor]``(
+ boost::asio::io_service & io_service,
+ const native_type & native_descriptor);
+
+
+[section:overload1 posix::basic_stream_descriptor::basic_stream_descriptor (1 of 2 overloads)]
+
+Construct a basic_stream_descriptor without opening it.
+
+ basic_stream_descriptor(
+ boost::asio::io_service & io_service);
+
+
+This constructor creates a stream descriptor without opening it. The descriptor needs to be opened and then connected or accepted before data can be sent or received on it.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[io_service][The io\_service object that the stream descriptor will use to dispatch handlers for any asynchronous operations performed on the descriptor. ]]
+
+]
+
+
+
+[endsect]
+
+
+
+[section:overload2 posix::basic_stream_descriptor::basic_stream_descriptor (2 of 2 overloads)]
+
+Construct a basic_stream_descriptor on an existing native descriptor.
+
+ basic_stream_descriptor(
+ boost::asio::io_service & io_service,
+ const native_type & native_descriptor);
+
+
+This constructor creates a stream descriptor object to hold an existing native descriptor.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[io_service][The io\_service object that the stream descriptor will use to dispatch handlers for any asynchronous operations performed on the descriptor.]]
+
+[[native_descriptor][The new underlying descriptor implementation.]]
+
+]
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
+
+]
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:bytes_readable posix::basic_stream_descriptor::bytes_readable]
+
+
+['Inherited from posix::descriptor_base.]
+
+IO control command to get the amount of data that can be read without blocking.
+
+ typedef implementation_defined bytes_readable;
+
+
+
+Implements the FIONREAD IO control command.
+
+
+[heading Example]
+
+
+
+ boost::asio::posix::stream_descriptor descriptor(io_service);
+ ...
+ boost::asio::descriptor_base::bytes_readable command(true);
+ descriptor.io_control(command);
+ std::size_t bytes_readable = command.get();
+
+
+
+
+
+
+[endsect]
+
+
+[section:cancel posix::basic_stream_descriptor::cancel]
+
+Cancel all asynchronous operations associated with the descriptor.
+
+ void ``[link boost_asio.reference.posix__basic_stream_descriptor.cancel.overload1 cancel]``();
+
+ boost::system::error_code ``[link boost_asio.reference.posix__basic_stream_descriptor.cancel.overload2 cancel]``(
+ boost::system::error_code & ec);
+
+
+[section:overload1 posix::basic_stream_descriptor::cancel (1 of 2 overloads)]
+
+
+['Inherited from posix::basic_descriptor.]
+
+Cancel all asynchronous operations associated with the descriptor.
+
+ void cancel();
+
+
+This function causes all outstanding asynchronous read or write operations to finish immediately, and the handlers for cancelled operations will be passed the boost::asio::error::operation\_aborted error.
+
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
+
+]
+
+
+
+[endsect]
+
+
+
+[section:overload2 posix::basic_stream_descriptor::cancel (2 of 2 overloads)]
+
+
+['Inherited from posix::basic_descriptor.]
+
+Cancel all asynchronous operations associated with the descriptor.
+
+ boost::system::error_code cancel(
+ boost::system::error_code & ec);
+
+
+This function causes all outstanding asynchronous read or write operations to finish immediately, and the handlers for cancelled operations will be passed the boost::asio::error::operation\_aborted error.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any. ]]
+
+]
+
+
+
+[endsect]
+
+
+[endsect]
+
+[section:close posix::basic_stream_descriptor::close]
+
+Close the descriptor.
+
+ void ``[link boost_asio.reference.posix__basic_stream_descriptor.close.overload1 close]``();
+
+ boost::system::error_code ``[link boost_asio.reference.posix__basic_stream_descriptor.close.overload2 close]``(
+ boost::system::error_code & ec);
+
+
+[section:overload1 posix::basic_stream_descriptor::close (1 of 2 overloads)]
+
+
+['Inherited from posix::basic_descriptor.]
+
+Close the descriptor.
+
+ void close();
+
+
+This function is used to close the descriptor. Any asynchronous read or write operations will be cancelled immediately, and will complete with the boost::asio::error::operation\_aborted error.
+
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
+
+]
+
+
+
+[endsect]
+
+
+
+[section:overload2 posix::basic_stream_descriptor::close (2 of 2 overloads)]
+
+
+['Inherited from posix::basic_descriptor.]
+
+Close the descriptor.
+
+ boost::system::error_code close(
+ boost::system::error_code & ec);
+
+
+This function is used to close the descriptor. Any asynchronous read or write operations will be cancelled immediately, and will complete with the boost::asio::error::operation\_aborted error.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any. ]]
+
+]
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:get_io_service posix::basic_stream_descriptor::get_io_service]
+
+
+['Inherited from basic_io_object.]
+
+Get the io_service associated with the object.
+
+ boost::asio::io_service & get_io_service();
+
+
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
+
+
+[heading Return Value]
+
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
+
+
+
+[endsect]
+
+
+
+[section:implementation posix::basic_stream_descriptor::implementation]
+
+
+['Inherited from basic_io_object.]
+
+The underlying implementation of the I/O object.
+
+ implementation_type implementation;
+
+
+
+[endsect]
+
+
+
+[section:implementation_type posix::basic_stream_descriptor::implementation_type]
+
+
+['Inherited from basic_io_object.]
+
+The underlying implementation type of I/O object.
+
+ typedef service_type::implementation_type implementation_type;
+
+
+
+
+[endsect]
+
+
+[section:io_control posix::basic_stream_descriptor::io_control]
+
+Perform an IO control command on the descriptor.
+
+ void ``[link boost_asio.reference.posix__basic_stream_descriptor.io_control.overload1 io_control]``(
+ IoControlCommand & command);
+
+ boost::system::error_code ``[link boost_asio.reference.posix__basic_stream_descriptor.io_control.overload2 io_control]``(
+ IoControlCommand & command,
+ boost::system::error_code & ec);
+
+
+[section:overload1 posix::basic_stream_descriptor::io_control (1 of 2 overloads)]
+
+
+['Inherited from posix::basic_descriptor.]
+
+Perform an IO control command on the descriptor.
+
+ void io_control(
+ IoControlCommand & command);
+
+
+This function is used to execute an IO control command on the descriptor.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[command][The IO control command to be performed on the descriptor.]]
+
+]
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
+
+[heading Example]
+
+Getting the number of bytes ready to read:
+
+ boost::asio::posix::stream_descriptor descriptor(io_service);
+ ...
+ boost::asio::posix::stream_descriptor::bytes_readable command;
+ descriptor.io_control(command);
+ std::size_t bytes_readable = command.get();
+
+
+
+
+
+
+[endsect]
+
+
+
+[section:overload2 posix::basic_stream_descriptor::io_control (2 of 2 overloads)]
+
+
+['Inherited from posix::basic_descriptor.]
+
+Perform an IO control command on the descriptor.
+
+ boost::system::error_code io_control(
+ IoControlCommand & command,
+ boost::system::error_code & ec);
+
+
+This function is used to execute an IO control command on the descriptor.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[command][The IO control command to be performed on the descriptor.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+[heading Example]
+
+Getting the number of bytes ready to read:
+
+ boost::asio::posix::stream_descriptor descriptor(io_service);
+ ...
+ boost::asio::posix::stream_descriptor::bytes_readable command;
+ boost::system::error_code ec;
+ descriptor.io_control(command, ec);
+ if (ec)
+ {
+ // An error occurred.
+ }
+ std::size_t bytes_readable = command.get();
+
+
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:io_service posix::basic_stream_descriptor::io_service]
+
+
+['Inherited from basic_io_object.]
+
+(Deprecated: use get_io_service().) Get the io_service associated with the object.
+
+ boost::asio::io_service & io_service();
+
+
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
+
+
+[heading Return Value]
+
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
+
+
+
+[endsect]
+
+
+
+[section:is_open posix::basic_stream_descriptor::is_open]
+
+
+['Inherited from posix::basic_descriptor.]
+
+Determine whether the descriptor is open.
+
+ bool is_open() const;
+
+
+
+[endsect]
+
+
+
+[section:lowest_layer posix::basic_stream_descriptor::lowest_layer]
+
+
+['Inherited from posix::basic_descriptor.]
+
+Get a reference to the lowest layer.
+
+ lowest_layer_type & lowest_layer();
+
+
+This function returns a reference to the lowest layer in a stack of layers. Since a basic_descriptor cannot contain any further layers, it simply returns a reference to itself.
+
+
+[heading Return Value]
+
+A reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
+
+
+
+[endsect]
+
+
+
+[section:lowest_layer_type posix::basic_stream_descriptor::lowest_layer_type]
+
+
+['Inherited from posix::basic_descriptor.]
+
+A basic_descriptor is always the lowest layer.
+
+ typedef basic_descriptor< StreamDescriptorService > lowest_layer_type;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_descriptor.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_descriptor.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_descriptor.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_descriptor is always the lowest layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_descriptor.native_type [*native_type]]]
+ [The native representation of a descriptor. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_descriptor.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the descriptor. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_descriptor.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.assign [*assign]]]
+ [Assign an existing native descriptor to the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.basic_descriptor [*basic_descriptor]]]
+ [Construct a basic_descriptor without opening it. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.close [*close]]]
+ [Close the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.io_control [*io_control]]]
+ [Perform an IO control command on the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.is_open [*is_open]]]
+ [Determine whether the descriptor is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.native [*native]]]
+ [Get the native descriptor representation. ]
+ ]
+
+]
+
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor._basic_descriptor [*~basic_descriptor]]]
+ [Protected destructor to prevent deletion through this type. ]
+ ]
+
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
+The posix::basic_descriptor class template provides the ability to wrap a POSIX descriptor.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+
+
+
+[endsect]
+
+
+
+[section:native posix::basic_stream_descriptor::native]
+
+
+['Inherited from posix::basic_descriptor.]
+
+Get the native descriptor representation.
+
+ native_type native();
+
+
+This function may be used to obtain the underlying representation of the descriptor. This is intended to allow access to native descriptor functionality that is not otherwise provided.
+
+
+[endsect]
+
+
+
+[section:native_type posix::basic_stream_descriptor::native_type]
+
+The native representation of a descriptor.
+
+ typedef StreamDescriptorService::native_type native_type;
+
+
+
+
+[endsect]
+
+
+
+[section:non_blocking_io posix::basic_stream_descriptor::non_blocking_io]
+
+
+['Inherited from posix::descriptor_base.]
+
+IO control command to set the blocking mode of the descriptor.
+
+ typedef implementation_defined non_blocking_io;
+
+
+
+Implements the FIONBIO IO control command.
+
+
+[heading Example]
+
+
+
+ boost::asio::posix::stream_descriptor descriptor(io_service);
+ ...
+ boost::asio::descriptor_base::non_blocking_io command(true);
+ descriptor.io_control(command);
+
+
+
+
+
+
+[endsect]
+
+
+[section:read_some posix::basic_stream_descriptor::read_some]
+
+Read some data from the descriptor.
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.posix__basic_stream_descriptor.read_some.overload1 read_some]``(
+ const MutableBufferSequence & buffers);
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.posix__basic_stream_descriptor.read_some.overload2 read_some]``(
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
+
+
+[section:overload1 posix::basic_stream_descriptor::read_some (1 of 2 overloads)]
+
+Read some data from the descriptor.
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some(
+ const MutableBufferSequence & buffers);
+
+
+This function is used to read data from the stream descriptor. The function call will block until one or more bytes of data has been read successfully, or until an error occurs.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[buffers][One or more buffers into which the data will be read.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes read.
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. An error code of boost::asio::error::eof indicates that the connection was closed by the peer.]]
+
+]
+
+[heading Remarks]
+
+The read\_some operation may not read all of the requested number of bytes. Consider using the
+[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
+
+[heading Example]
+
+To read into a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
+
+ descriptor.read_some(boost::asio::buffer(data, size));
+
+
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+
+
+
+[endsect]
+
+
+
+[section:overload2 posix::basic_stream_descriptor::read_some (2 of 2 overloads)]
+
+Read some data from the descriptor.
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some(
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
+
+
+This function is used to read data from the stream descriptor. The function call will block until one or more bytes of data has been read successfully, or until an error occurs.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[buffers][One or more buffers into which the data will be read.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes read. Returns 0 if an error occurred.
+
+[heading Remarks]
+
+The read\_some operation may not read all of the requested number of bytes. Consider using the
+[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:service posix::basic_stream_descriptor::service]
+
+
+['Inherited from basic_io_object.]
+
+The service associated with the I/O object.
+
+ service_type & service;
+
+
+
+[endsect]
+
+
+
+[section:service_type posix::basic_stream_descriptor::service_type]
+
+
+['Inherited from basic_io_object.]
+
+The type of the service that will be used to provide I/O operations.
+
+ typedef StreamDescriptorService service_type;
+
+
+
+
+[endsect]
+
+
+[section:write_some posix::basic_stream_descriptor::write_some]
+
+Write some data to the descriptor.
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.posix__basic_stream_descriptor.write_some.overload1 write_some]``(
+ const ConstBufferSequence & buffers);
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.posix__basic_stream_descriptor.write_some.overload2 write_some]``(
+ const ConstBufferSequence & buffers,
+ boost::system::error_code & ec);
+
+
+[section:overload1 posix::basic_stream_descriptor::write_some (1 of 2 overloads)]
+
+Write some data to the descriptor.
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some(
+ const ConstBufferSequence & buffers);
+
+
+This function is used to write data to the stream descriptor. The function call will block until one or more bytes of the data has been written successfully, or until an error occurs.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[buffers][One or more data buffers to be written to the descriptor.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes written.
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. An error code of boost::asio::error::eof indicates that the connection was closed by the peer.]]
+
+]
+
+[heading Remarks]
+
+The write\_some operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
+
+[heading Example]
+
+To write a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
+
+ descriptor.write_some(boost::asio::buffer(data, size));
+
+
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on writing multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+
+
+
+[endsect]
+
+
+
+[section:overload2 posix::basic_stream_descriptor::write_some (2 of 2 overloads)]
+
+Write some data to the descriptor.
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some(
+ const ConstBufferSequence & buffers,
+ boost::system::error_code & ec);
+
+
+This function is used to write data to the stream descriptor. The function call will block until one or more bytes of the data has been written successfully, or until an error occurs.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[buffers][One or more data buffers to be written to the descriptor.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes written. Returns 0 if an error occurred.
+
+[heading Remarks]
+
+The write\_some operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[endsect]
+
+[section:posix__descriptor_base posix::descriptor_base]
+
+The descriptor_base class is used as a base for the basic_stream_descriptor class template so that we have a common place to define the associated IO control commands.
+
+ class descriptor_base
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.posix__descriptor_base.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__descriptor_base.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the descriptor. ]
+
+ ]
+
+]
+
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.posix__descriptor_base._descriptor_base [*~descriptor_base]]]
+ [Protected destructor to prevent deletion through this type. ]
+ ]
+
+]
+
+
+[section:bytes_readable posix::descriptor_base::bytes_readable]
+
+IO control command to get the amount of data that can be read without blocking.
+
+ typedef implementation_defined bytes_readable;
+
+
+
+Implements the FIONREAD IO control command.
+
+
+[heading Example]
+
+
+
+ boost::asio::posix::stream_descriptor descriptor(io_service);
+ ...
+ boost::asio::descriptor_base::bytes_readable command(true);
+ descriptor.io_control(command);
+ std::size_t bytes_readable = command.get();
+
+
+
+
+
+
+[endsect]
+
+
+
+[section:non_blocking_io posix::descriptor_base::non_blocking_io]
+
+IO control command to set the blocking mode of the descriptor.
+
+ typedef implementation_defined non_blocking_io;
+
+
+
+Implements the FIONBIO IO control command.
+
+
+[heading Example]
+
+
+
+ boost::asio::posix::stream_descriptor descriptor(io_service);
+ ...
+ boost::asio::descriptor_base::non_blocking_io command(true);
+ descriptor.io_control(command);
+
+
+
+
+
+
+[endsect]
+
+
+
+[section:_descriptor_base posix::descriptor_base::~descriptor_base]
+
+Protected destructor to prevent deletion through this type.
+
+ ~descriptor_base();
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+
+[section:posix__stream_descriptor posix::stream_descriptor]
+
+Typedef for the typical usage of a stream-oriented descriptor.
+
+ typedef basic_stream_descriptor stream_descriptor;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_stream_descriptor.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_stream_descriptor.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_stream_descriptor.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_descriptor is always the lowest layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_stream_descriptor.native_type [*native_type]]]
+ [The native representation of a descriptor. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_stream_descriptor.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the descriptor. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_stream_descriptor.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.assign [*assign]]]
+ [Assign an existing native descriptor to the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.async_read_some [*async_read_some]]]
+ [Start an asynchronous read. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.async_write_some [*async_write_some]]]
+ [Start an asynchronous write. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.basic_stream_descriptor [*basic_stream_descriptor]]]
+ [Construct a basic_stream_descriptor without opening it. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.close [*close]]]
+ [Close the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.io_control [*io_control]]]
+ [Perform an IO control command on the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.is_open [*is_open]]]
+ [Determine whether the descriptor is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.native [*native]]]
+ [Get the native descriptor representation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.read_some [*read_some]]]
+ [Read some data from the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.write_some [*write_some]]]
+ [Write some data to the descriptor. ]
+ ]
+
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
+The posix::basic_stream_descriptor class template provides asynchronous and blocking stream-oriented descriptor functionality.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+
+
+
+[endsect]
+
+
+[section:posix__stream_descriptor_service posix::stream_descriptor_service]
+
+Default service implementation for a stream descriptor.
+
+ class stream_descriptor_service :
+ public io_service::service
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.posix__stream_descriptor_service.implementation_type [*implementation_type]]]
+ [The type of a stream descriptor implementation. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__stream_descriptor_service.native_type [*native_type]]]
+ [The native descriptor type. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.assign [*assign]]]
+ [Assign an existing native descriptor to a stream descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.async_read_some [*async_read_some]]]
+ [Start an asynchronous read. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.async_write_some [*async_write_some]]]
+ [Start an asynchronous write. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.close [*close]]]
+ [Close a stream descriptor implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.construct [*construct]]]
+ [Construct a new stream descriptor implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.destroy [*destroy]]]
+ [Destroy a stream descriptor implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.get_io_service [*get_io_service]]]
+ [Get the io_service object that owns the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.io_control [*io_control]]]
+ [Perform an IO control command on the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.is_open [*is_open]]]
+ [Determine whether the descriptor is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.native [*native]]]
+ [Get the native descriptor implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.read_some [*read_some]]]
+ [Read some data from the stream. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.shutdown_service [*shutdown_service]]]
+ [Destroy all user-defined descriptorr objects owned by the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.stream_descriptor_service [*stream_descriptor_service]]]
+ [Construct a new stream descriptor service for the specified io_service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.write_some [*write_some]]]
+ [Write the given data to the stream. ]
+ ]
+
+]
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.id [*id]]]
+ [The unique service identifier. ]
+ ]
+
+]
+
+
+[section:assign posix::stream_descriptor_service::assign]
+
+Assign an existing native descriptor to a stream descriptor.
+
+ boost::system::error_code assign(
+ implementation_type & impl,
+ const native_type & native_descriptor,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+
+[section:async_read_some posix::stream_descriptor_service::async_read_some]
+
+Start an asynchronous read.
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_read_some(
+ implementation_type & impl,
+ const MutableBufferSequence & buffers,
+ ReadHandler descriptorr);
+
+
+
+[endsect]
+
+
+
+[section:async_write_some posix::stream_descriptor_service::async_write_some]
+
+Start an asynchronous write.
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_write_some(
+ implementation_type & impl,
+ const ConstBufferSequence & buffers,
+ WriteHandler descriptorr);
+
+
+
+[endsect]
+
+
+
+[section:cancel posix::stream_descriptor_service::cancel]
+
+Cancel all asynchronous operations associated with the descriptor.
+
+ boost::system::error_code cancel(
+ implementation_type & impl,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+
+[section:close posix::stream_descriptor_service::close]
+
+Close a stream descriptor implementation.
+
+ boost::system::error_code close(
+ implementation_type & impl,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+
+[section:construct posix::stream_descriptor_service::construct]
+
+Construct a new stream descriptor implementation.
+
+ void construct(
+ implementation_type & impl);
+
+
+
+[endsect]
+
+
+
+[section:destroy posix::stream_descriptor_service::destroy]
+
+Destroy a stream descriptor implementation.
+
+ void destroy(
+ implementation_type & impl);
+
+
+
+[endsect]
+
+
+
+[section:get_io_service posix::stream_descriptor_service::get_io_service]
+
+
+['Inherited from io_service.]
+
+Get the io_service object that owns the service.
+
+ boost::asio::io_service & get_io_service();
+
+
+
+[endsect]
+
+
+
+[section:id posix::stream_descriptor_service::id]
+
+The unique service identifier.
+
+ static boost::asio::io_service::id id;
+
+
+
+[endsect]
+
+
+
+[section:implementation_type posix::stream_descriptor_service::implementation_type]
+
+The type of a stream descriptor implementation.
+
+ typedef implementation_defined implementation_type;
+
+
+
+
+[endsect]
+
+
+
+[section:io_control posix::stream_descriptor_service::io_control]
+
+Perform an IO control command on the descriptor.
+
+ template<
+ typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
+ boost::system::error_code io_control(
+ implementation_type & impl,
+ IoControlCommand & command,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+
+[section:io_service posix::stream_descriptor_service::io_service]
+
+
+['Inherited from io_service.]
+
+(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+
+ boost::asio::io_service & io_service();
+
+
+
+[endsect]
+
+
+
+[section:is_open posix::stream_descriptor_service::is_open]
+
+Determine whether the descriptor is open.
+
+ bool is_open(
+ const implementation_type & impl) const;
+
+
+
+[endsect]
+
+
+
+[section:native posix::stream_descriptor_service::native]
+
+Get the native descriptor implementation.
+
+ native_type native(
+ implementation_type & impl);
+
+
+
+[endsect]
+
+
+
+[section:native_type posix::stream_descriptor_service::native_type]
+
+The native descriptor type.
+
+ typedef implementation_defined native_type;
+
+
+
+
+[endsect]
+
+
+
+[section:read_some posix::stream_descriptor_service::read_some]
+
+Read some data from the stream.
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some(
+ implementation_type & impl,
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+
+[section:shutdown_service posix::stream_descriptor_service::shutdown_service]
+
+Destroy all user-defined descriptorr objects owned by the service.
+
+ void shutdown_service();
+
+
+
+[endsect]
+
+
+
+[section:stream_descriptor_service posix::stream_descriptor_service::stream_descriptor_service]
+
+Construct a new stream descriptor service for the specified io_service.
+
+ stream_descriptor_service(
+ boost::asio::io_service & io_service);
+
+
+
+[endsect]
+
+
+
+[section:write_some posix::stream_descriptor_service::write_some]
+
+Write the given data to the stream.
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some(
+ implementation_type & impl,
+ const ConstBufferSequence & buffers,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:read read]
+
+Attempt to read a certain amount of data from a stream before returning.
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.read.overload1 read]``(
+ SyncReadStream & s,
+ const MutableBufferSequence & buffers);
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename CompletionCondition>
+ std::size_t ``[link boost_asio.reference.read.overload2 read]``(
+ SyncReadStream & s,
+ const MutableBufferSequence & buffers,
+ CompletionCondition completion_condition);
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename CompletionCondition>
+ std::size_t ``[link boost_asio.reference.read.overload3 read]``(
+ SyncReadStream & s,
+ const MutableBufferSequence & buffers,
+ CompletionCondition completion_condition,
+ boost::system::error_code & ec);
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t ``[link boost_asio.reference.read.overload4 read]``(
+ SyncReadStream & s,
+ basic_streambuf< Allocator > & b);
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator,
+ typename CompletionCondition>
+ std::size_t ``[link boost_asio.reference.read.overload5 read]``(
+ SyncReadStream & s,
+ basic_streambuf< Allocator > & b,
+ CompletionCondition completion_condition);
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator,
+ typename CompletionCondition>
+ std::size_t ``[link boost_asio.reference.read.overload6 read]``(
+ SyncReadStream & s,
+ basic_streambuf< Allocator > & b,
+ CompletionCondition completion_condition,
+ boost::system::error_code & ec);
+
+
+[section:overload1 read (1 of 6 overloads)]
+
+Attempt to read a certain amount of data from a stream before returning.
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read(
+ SyncReadStream & s,
+ const MutableBufferSequence & buffers);
+
+
+This function is used to read a certain number of bytes of data from a stream. The call will block until one of the following conditions is true:
+
+
+* The supplied buffers are full. That is, the bytes transferred is equal to the sum of the buffer sizes.
+
+* An error occurred.
+
+This operation is implemented in terms of one or more calls to the stream's read\_some function.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+
+[[buffers][One or more buffers into which the data will be read. The sum of the buffer sizes indicates the maximum number of bytes to read from the stream.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes transferred.
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
+
+[heading Example]
+
+To read into a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
+
+ boost::asio::read(s, boost::asio::buffer(data, size));
+
+
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+
+[heading Remarks]
+
+This overload is equivalent to calling:
+
+ boost::asio::read(
+ s, buffers,
+ boost::asio::transfer_all());
+
+
+
+
+
+
+[endsect]
+
+
+
+[section:overload2 read (2 of 6 overloads)]
+
+Attempt to read a certain amount of data from a stream before returning.
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename CompletionCondition>
+ std::size_t read(
+ SyncReadStream & s,
+ const MutableBufferSequence & buffers,
+ CompletionCondition completion_condition);
+
+
+This function is used to read a certain number of bytes of data from a stream. The call will block until one of the following conditions is true:
+
+
+* The supplied buffers are full. That is, the bytes transferred is equal to the sum of the buffer sizes.
+
+* The completion_condition function object returns true.
+
+This operation is implemented in terms of one or more calls to the stream's read\_some function.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+
+[[buffers][One or more buffers into which the data will be read. The sum of the buffer sizes indicates the maximum number of bytes to read from the stream.]]
+
+[[completion_condition][The function object to be called to determine whether the read operation is complete. The signature of the function object must be:
+``
+ bool completion_condition(
+ const boost::system::error_code& error, // Result of latest read_some
+ // operation.
+
+ std::size_t bytes_transferred // Number of bytes transferred
+ // so far.
+ );
+
+``
+A return value of true indicates that the read operation is complete. False indicates that further calls to the stream's read\_some function are required.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes transferred.
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
+
+[heading Example]
+
+To read into a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
+
+ boost::asio::read(s, boost::asio::buffer(data, size),
+ boost::asio::transfer_at_least(32));
+
+
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+
+
+
+[endsect]
+
+
+
+[section:overload3 read (3 of 6 overloads)]
+
+Attempt to read a certain amount of data from a stream before returning.
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename CompletionCondition>
+ std::size_t read(
+ SyncReadStream & s,
+ const MutableBufferSequence & buffers,
+ CompletionCondition completion_condition,
+ boost::system::error_code & ec);
+
+
+This function is used to read a certain number of bytes of data from a stream. The call will block until one of the following conditions is true:
+
+
+* The supplied buffers are full. That is, the bytes transferred is equal to the sum of the buffer sizes.
+
+* The completion_condition function object returns true.
+
+This operation is implemented in terms of one or more calls to the stream's read\_some function.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+
+[[buffers][One or more buffers into which the data will be read. The sum of the buffer sizes indicates the maximum number of bytes to read from the stream.]]
+
+[[completion_condition][The function object to be called to determine whether the read operation is complete. The signature of the function object must be:
+``
+ bool completion_condition(
+ const boost::system::error_code& error, // Result of latest read_some
+ // operation.
+
+ std::size_t bytes_transferred // Number of bytes transferred
+ // so far.
+ );
+
+``
+A return value of true indicates that the read operation is complete. False indicates that further calls to the stream's read\_some function are required.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes read. If an error occurs, returns the total number of bytes successfully transferred prior to the error.
+
+
+
+[endsect]
+
+
+
+[section:overload4 read (4 of 6 overloads)]
+
+Attempt to read a certain amount of data from a stream before returning.
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t read(
+ SyncReadStream & s,
+ basic_streambuf< Allocator > & b);
+
+
+This function is used to read a certain number of bytes of data from a stream. The call will block until one of the following conditions is true:
+
+
+* An error occurred.
+
+This operation is implemented in terms of one or more calls to the stream's read\_some function.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+
+[[b][The basic\_streambuf object into which the data will be read.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes transferred.
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
+
+[heading Remarks]
+
+This overload is equivalent to calling:
+
+ boost::asio::read(
+ s, b,
+ boost::asio::transfer_all());
+
+
+
+
+
+
+[endsect]
+
+
+
+[section:overload5 read (5 of 6 overloads)]
+
+Attempt to read a certain amount of data from a stream before returning.
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator,
+ typename CompletionCondition>
+ std::size_t read(
+ SyncReadStream & s,
+ basic_streambuf< Allocator > & b,
+ CompletionCondition completion_condition);
+
+
+This function is used to read a certain number of bytes of data from a stream. The call will block until one of the following conditions is true:
+
+
+* The completion_condition function object returns true.
+
+This operation is implemented in terms of one or more calls to the stream's read\_some function.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+
+[[b][The basic\_streambuf object into which the data will be read.]]
+
+[[completion_condition][The function object to be called to determine whether the read operation is complete. The signature of the function object must be:
+``
+ bool completion_condition(
+ const boost::system::error_code& error, // Result of latest read_some
+ // operation.
+
+ std::size_t bytes_transferred // Number of bytes transferred
+ // so far.
+ );
+
+``
+A return value of true indicates that the read operation is complete. False indicates that further calls to the stream's read\_some function are required.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes transferred.
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
+
+]
+
+
+
+[endsect]
+
+
+
+[section:overload6 read (6 of 6 overloads)]
+
+Attempt to read a certain amount of data from a stream before returning.
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator,
+ typename CompletionCondition>
+ std::size_t read(
+ SyncReadStream & s,
+ basic_streambuf< Allocator > & b,
+ CompletionCondition completion_condition,
+ boost::system::error_code & ec);
+
+
+This function is used to read a certain number of bytes of data from a stream. The call will block until one of the following conditions is true:
+
+
+* The completion_condition function object returns true.
+
+This operation is implemented in terms of one or more calls to the stream's read\_some function.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+
+[[b][The basic\_streambuf object into which the data will be read.]]
+
+[[completion_condition][The function object to be called to determine whether the read operation is complete. The signature of the function object must be:
+``
+ bool completion_condition(
+ const boost::system::error_code& error, // Result of latest read_some
+ // operation.
+
+ std::size_t bytes_transferred // Number of bytes transferred
+ // so far.
+ );
+
+``
+A return value of true indicates that the read operation is complete. False indicates that further calls to the stream's read\_some function are required.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes read. If an error occurs, returns the total number of bytes successfully transferred prior to the error.
+
+
+
+[endsect]
+
+
+[endsect]
+
+[section:read_until read_until]
+
+Read data into a streambuf until a delimiter is encountered.
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t ``[link boost_asio.reference.read_until.overload1 read_until]``(
+ SyncReadStream & s,
+ boost::asio::basic_streambuf< Allocator > & b,
+ char delim);
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t ``[link boost_asio.reference.read_until.overload2 read_until]``(
+ SyncReadStream & s,
+ boost::asio::basic_streambuf< Allocator > & b,
+ char delim,
+ boost::system::error_code & ec);
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t ``[link boost_asio.reference.read_until.overload3 read_until]``(
+ SyncReadStream & s,
+ boost::asio::basic_streambuf< Allocator > & b,
+ const std::string & delim);
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t ``[link boost_asio.reference.read_until.overload4 read_until]``(
+ SyncReadStream & s,
+ boost::asio::basic_streambuf< Allocator > & b,
+ const std::string & delim,
+ boost::system::error_code & ec);
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t ``[link boost_asio.reference.read_until.overload5 read_until]``(
+ SyncReadStream & s,
+ boost::asio::basic_streambuf< Allocator > & b,
+ const boost::regex & expr);
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t ``[link boost_asio.reference.read_until.overload6 read_until]``(
+ SyncReadStream & s,
+ boost::asio::basic_streambuf< Allocator > & b,
+ const boost::regex & expr,
+ boost::system::error_code & ec);
+
+
+[section:overload1 read_until (1 of 6 overloads)]
+
+Read data into a streambuf until a delimiter is encountered.
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t read_until(
+ SyncReadStream & s,
+ boost::asio::basic_streambuf< Allocator > & b,
+ char delim);
+
+
+This function is used to read data into the specified streambuf until the streambuf's get area contains the specified delimiter. The call will block until one of the following conditions is true:
+
+
+* The get area of the streambuf contains the specified delimiter.
+
+* An error occurred.
+
+This operation is implemented in terms of zero or more calls to the stream's read\_some function. If the streambuf's get area already contains the delimiter, the function returns immediately.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+
+[[b][A streambuf object into which the data will be read.]]
+
+[[delim][The delimiter character.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes in the streambuf's get area up to and including the delimiter.
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
+
+[heading Example]
+
+To read data into a streambuf until a newline is encountered:
+
+ boost::asio::streambuf b;
+ boost::asio::read_until(s, b, '\n');
+ std::istream is(&b);
+ std::string line;
+ std::getline(is, line);
+
+
+
+
+
+
+[endsect]
+
+
+
+[section:overload2 read_until (2 of 6 overloads)]
+
+Read data into a streambuf until a delimiter is encountered.
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t read_until(
+ SyncReadStream & s,
+ boost::asio::basic_streambuf< Allocator > & b,
+ char delim,
+ boost::system::error_code & ec);
+
+
+This function is used to read data into the specified streambuf until the streambuf's get area contains the specified delimiter. The call will block until one of the following conditions is true:
+
+
+* The get area of the streambuf contains the specified delimiter.
+
+* An error occurred.
+
+This operation is implemented in terms of zero or more calls to the stream's read\_some function. If the streambuf's get area already contains the delimiter, the function returns immediately.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+
+[[b][A streambuf object into which the data will be read.]]
+
+[[delim][The delimiter character.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes in the streambuf's get area up to and including the delimiter. Returns 0 if an error occurred.
+
+
+
+[endsect]
+
+
+
+[section:overload3 read_until (3 of 6 overloads)]
+
+Read data into a streambuf until a delimiter is encountered.
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t read_until(
+ SyncReadStream & s,
+ boost::asio::basic_streambuf< Allocator > & b,
+ const std::string & delim);
+
+
+This function is used to read data into the specified streambuf until the streambuf's get area contains the specified delimiter. The call will block until one of the following conditions is true:
+
+
+* The get area of the streambuf contains the specified delimiter.
+
+* An error occurred.
+
+This operation is implemented in terms of zero or more calls to the stream's read\_some function. If the streambuf's get area already contains the delimiter, the function returns immediately.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+
+[[b][A streambuf object into which the data will be read.]]
+
+[[delim][The delimiter string.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes in the streambuf's get area up to and including the delimiter.
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
+
+[heading Example]
+
+To read data into a streambuf until a newline is encountered:
+
+ boost::asio::streambuf b;
+ boost::asio::read_until(s, b, "\r\n");
+ std::istream is(&b);
+ std::string line;
+ std::getline(is, line);
+
+
+
+
+
+
+[endsect]
+
+
+
+[section:overload4 read_until (4 of 6 overloads)]
+
+Read data into a streambuf until a delimiter is encountered.
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t read_until(
+ SyncReadStream & s,
+ boost::asio::basic_streambuf< Allocator > & b,
+ const std::string & delim,
+ boost::system::error_code & ec);
+
+
+This function is used to read data into the specified streambuf until the streambuf's get area contains the specified delimiter. The call will block until one of the following conditions is true:
+
+
+* The get area of the streambuf contains the specified delimiter.
+
+* An error occurred.
+
+This operation is implemented in terms of zero or more calls to the stream's read\_some function. If the streambuf's get area already contains the delimiter, the function returns immediately.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+
+[[b][A streambuf object into which the data will be read.]]
+
+[[delim][The delimiter string.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes in the streambuf's get area up to and including the delimiter. Returns 0 if an error occurred.
+
+
+
+[endsect]
+
+
+
+[section:overload5 read_until (5 of 6 overloads)]
+
+Read data into a streambuf until a regular expression is located.
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t read_until(
+ SyncReadStream & s,
+ boost::asio::basic_streambuf< Allocator > & b,
+ const boost::regex & expr);
+
+
+This function is used to read data into the specified streambuf until the streambuf's get area contains some data that matches a regular expression. The call will block until one of the following conditions is true:
+
+
+* A substring of the streambuf's get area matches the regular expression.
+
+* An error occurred.
+
+This operation is implemented in terms of zero or more calls to the stream's read\_some function. If the streambuf's get area already contains data that matches the regular expression, the function returns immediately.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+
+[[b][A streambuf object into which the data will be read.]]
+
+[[expr][The regular expression.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes in the streambuf's get area up to and including the substring that matches the regular expression.
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
+
+[heading Example]
+
+To read data into a streambuf until a CR-LF sequence is encountered:
+
+ boost::asio::streambuf b;
+ boost::asio::read_until(s, b, boost::regex("\r\n"));
+ std::istream is(&b);
+ std::string line;
+ std::getline(is, line);
+
+
+
+
+
+
+[endsect]
+
+
+
+[section:overload6 read_until (6 of 6 overloads)]
+
+Read data into a streambuf until a regular expression is located.
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t read_until(
+ SyncReadStream & s,
+ boost::asio::basic_streambuf< Allocator > & b,
+ const boost::regex & expr,
+ boost::system::error_code & ec);
+
+
+This function is used to read data into the specified streambuf until the streambuf's get area contains some data that matches a regular expression. The call will block until one of the following conditions is true:
+
+
+* A substring of the streambuf's get area matches the regular expression.
+
+* An error occurred.
+
+This operation is implemented in terms of zero or more calls to the stream's read\_some function. If the streambuf's get area already contains data that matches the regular expression, the function returns immediately.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+
+[[b][A streambuf object into which the data will be read.]]
+
+[[expr][The regular expression.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes in the streambuf's get area up to and including the substring that matches the regular expression. Returns 0 if an error occurred.
+
+
+
+[endsect]
+
+
+[endsect]
+
+[section:service_already_exists service_already_exists]
+
+Exception thrown when trying to add a duplicate service to an io_service.
+
+ class service_already_exists
+
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.service_already_exists.service_already_exists [*service_already_exists]]]
+ []
+ ]
+
+]
+
+
+[section:service_already_exists service_already_exists::service_already_exists]
+
+
+
+ service_already_exists();
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:socket_acceptor_service socket_acceptor_service]
+
+Default service implementation for a socket acceptor.
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``>
+ class socket_acceptor_service :
+ public io_service::service
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.socket_acceptor_service.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.socket_acceptor_service.implementation_type [*implementation_type]]]
+ [The native type of the socket acceptor. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.socket_acceptor_service.native_type [*native_type]]]
+ [The native acceptor type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.socket_acceptor_service.protocol_type [*protocol_type]]]
+ [The protocol type. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.accept [*accept]]]
+ [Accept a new connection. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.assign [*assign]]]
+ [Assign an existing native acceptor to a socket acceptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.async_accept [*async_accept]]]
+ [Start an asynchronous accept. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.bind [*bind]]]
+ [Bind the socket acceptor to the specified local endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the acceptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.close [*close]]]
+ [Close a socket acceptor implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.construct [*construct]]]
+ [Construct a new socket acceptor implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.destroy [*destroy]]]
+ [Destroy a socket acceptor implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.get_io_service [*get_io_service]]]
+ [Get the io_service object that owns the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.get_option [*get_option]]]
+ [Get a socket option. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.io_control [*io_control]]]
+ [Perform an IO control command on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.is_open [*is_open]]]
+ [Determine whether the acceptor is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.listen [*listen]]]
+ [Place the socket acceptor into the state where it will listen for new connections. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.local_endpoint [*local_endpoint]]]
+ [Get the local endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.native [*native]]]
+ [Get the native acceptor implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.open [*open]]]
+ [Open a new socket acceptor implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.set_option [*set_option]]]
+ [Set a socket option. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.shutdown_service [*shutdown_service]]]
+ [Destroy all user-defined handler objects owned by the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.socket_acceptor_service [*socket_acceptor_service]]]
+ [Construct a new socket acceptor service for the specified io_service. ]
+ ]
+
+]
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.id [*id]]]
+ [The unique service identifier. ]
+ ]
+
+]
+
+
+[section:accept socket_acceptor_service::accept]
+
+Accept a new connection.
+
+ template<
+ typename ``[link boost_asio.reference.SocketService SocketService]``>
+ boost::system::error_code accept(
+ implementation_type & impl,
+ basic_socket< protocol_type, SocketService > & peer,
+ endpoint_type * peer_endpoint,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+
+[section:assign socket_acceptor_service::assign]
+
+Assign an existing native acceptor to a socket acceptor.
+
+ boost::system::error_code assign(
+ implementation_type & impl,
+ const protocol_type & protocol,
+ const native_type & native_acceptor,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+
+[section:async_accept socket_acceptor_service::async_accept]
+
+Start an asynchronous accept.
+
+ template<
+ typename ``[link boost_asio.reference.SocketService SocketService]``,
+ typename ``[link boost_asio.reference.AcceptHandler AcceptHandler]``>
+ void async_accept(
+ implementation_type & impl,
+ basic_socket< protocol_type, SocketService > & peer,
+ endpoint_type * peer_endpoint,
+ AcceptHandler handler);
+
+
+
+[endsect]
+
+
+
+[section:bind socket_acceptor_service::bind]
+
+Bind the socket acceptor to the specified local endpoint.
+
+ boost::system::error_code bind(
+ implementation_type & impl,
+ const endpoint_type & endpoint,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+
+[section:cancel socket_acceptor_service::cancel]
+
+Cancel all asynchronous operations associated with the acceptor.
+
+ boost::system::error_code cancel(
+ implementation_type & impl,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+
+[section:close socket_acceptor_service::close]
+
+Close a socket acceptor implementation.
+
+ boost::system::error_code close(
+ implementation_type & impl,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+
+[section:construct socket_acceptor_service::construct]
+
+Construct a new socket acceptor implementation.
+
+ void construct(
+ implementation_type & impl);
+
+
+
+[endsect]
+
+
+
+[section:destroy socket_acceptor_service::destroy]
+
+Destroy a socket acceptor implementation.
+
+ void destroy(
+ implementation_type & impl);
+
+
+
+[endsect]
+
+
+
+[section:endpoint_type socket_acceptor_service::endpoint_type]
+
+The endpoint type.
+
+ typedef protocol_type::endpoint endpoint_type;
+
+
+
+
+[endsect]
+
+
+
+[section:get_io_service socket_acceptor_service::get_io_service]
+
+
+['Inherited from io_service.]
+
+Get the io_service object that owns the service.
+
+ boost::asio::io_service & get_io_service();
+
+
+
+[endsect]
+
+
+
+[section:get_option socket_acceptor_service::get_option]
+
+Get a socket option.
+
+ template<
+ typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
+ boost::system::error_code get_option(
+ const implementation_type & impl,
+ GettableSocketOption & option,
+ boost::system::error_code & ec) const;
+
+
+
+[endsect]
+
+
+
+[section:id socket_acceptor_service::id]
+
+The unique service identifier.
+
+ static boost::asio::io_service::id id;
+
+
+
+[endsect]
+
+
+
+[section:implementation_type socket_acceptor_service::implementation_type]
+
+The native type of the socket acceptor.
+
+ typedef implementation_defined implementation_type;
+
+
+
+
+[endsect]
+
+
+
+[section:io_control socket_acceptor_service::io_control]
+
+Perform an IO control command on the socket.
+
+ template<
+ typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
+ boost::system::error_code io_control(
+ implementation_type & impl,
+ IoControlCommand & command,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+
+[section:io_service socket_acceptor_service::io_service]
+
+
+['Inherited from io_service.]
+
+(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+
+ boost::asio::io_service & io_service();
+
+
+
+[endsect]
+
+
+
+[section:is_open socket_acceptor_service::is_open]
+
+Determine whether the acceptor is open.
+
+ bool is_open(
+ const implementation_type & impl) const;
+
+
+
+[endsect]
+
+
+
+[section:listen socket_acceptor_service::listen]
+
+Place the socket acceptor into the state where it will listen for new connections.
+
+ boost::system::error_code listen(
+ implementation_type & impl,
+ int backlog,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+
+[section:local_endpoint socket_acceptor_service::local_endpoint]
+
+Get the local endpoint.
+
+ endpoint_type local_endpoint(
+ const implementation_type & impl,
+ boost::system::error_code & ec) const;
+
+
+
+[endsect]
+
+
+
+[section:native socket_acceptor_service::native]
+
+Get the native acceptor implementation.
+
+ native_type native(
+ implementation_type & impl);
+
+
+
+[endsect]
+
+
+
+[section:native_type socket_acceptor_service::native_type]
+
+The native acceptor type.
+
+ typedef implementation_defined native_type;
+
+
+
+
+[endsect]
+
+
+
+[section:open socket_acceptor_service::open]
+
+Open a new socket acceptor implementation.
+
+ boost::system::error_code open(
+ implementation_type & impl,
+ const protocol_type & protocol,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+
+[section:protocol_type socket_acceptor_service::protocol_type]
+
+The protocol type.
+
+ typedef Protocol protocol_type;
+
+
+
+
+[endsect]
+
+
+
+[section:set_option socket_acceptor_service::set_option]
+
+Set a socket option.
+
+ template<
+ typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
+ boost::system::error_code set_option(
+ implementation_type & impl,
+ const SettableSocketOption & option,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+
+[section:shutdown_service socket_acceptor_service::shutdown_service]
+
+Destroy all user-defined handler objects owned by the service.
+
+ void shutdown_service();
+
+
+
+[endsect]
+
+
+
+[section:socket_acceptor_service socket_acceptor_service::socket_acceptor_service]
+
+Construct a new socket acceptor service for the specified io_service.
+
+ socket_acceptor_service(
+ boost::asio::io_service & io_service);
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:socket_base socket_base]
+
+The socket_base class is used as a base for the basic_stream_socket and basic_datagram_socket class templates so that we have a common place to define the shutdown_type and enum.
+
+ class socket_base
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.socket_base.broadcast [*broadcast]]]
+ [Socket option to permit sending of broadcast messages. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.socket_base.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.socket_base.debug [*debug]]]
+ [Socket option to enable socket-level debugging. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.socket_base.do_not_route [*do_not_route]]]
+ [Socket option to prevent routing, use local interfaces only. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.socket_base.enable_connection_aborted [*enable_connection_aborted]]]
+ [Socket option to report aborted connections on accept. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.socket_base.keep_alive [*keep_alive]]]
+ [Socket option to send keep-alives. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.socket_base.linger [*linger]]]
+ [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.socket_base.message_flags [*message_flags]]]
+ [Bitmask type for flags that can be passed to send and receive operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.socket_base.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.socket_base.receive_buffer_size [*receive_buffer_size]]]
+ [Socket option for the receive buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.socket_base.receive_low_watermark [*receive_low_watermark]]]
+ [Socket option for the receive low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.socket_base.reuse_address [*reuse_address]]]
+ [Socket option to allow the socket to be bound to an address that is already in use. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.socket_base.send_buffer_size [*send_buffer_size]]]
+ [Socket option for the send buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.socket_base.send_low_watermark [*send_low_watermark]]]
+ [Socket option for the send low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.socket_base.shutdown_type [*shutdown_type]]]
+ [Different ways a socket may be shutdown. ]
+
+ ]
+
+]
+
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.socket_base._socket_base [*~socket_base]]]
+ [Protected destructor to prevent deletion through this type. ]
+ ]
+
+]
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.socket_base.max_connections [*max_connections]]]
+ [The maximum length of the queue of pending incoming connections. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_base.message_do_not_route [*message_do_not_route]]]
+ [Specify that the data should not be subject to routing. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_base.message_out_of_band [*message_out_of_band]]]
+ [Process out-of-band data. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_base.message_peek [*message_peek]]]
+ [Peek at incoming data without removing it from the input queue. ]
+ ]
+
+]
+
+
+[section:broadcast socket_base::broadcast]
+
+Socket option to permit sending of broadcast messages.
+
+ typedef implementation_defined broadcast;
+
+
+
+Implements the SOL\_SOCKET/SO\_BROADCAST socket option.
+
+
+[heading Examples]
+
+Setting the option:
+
+ boost::asio::ip::udp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::broadcast option(true);
+ socket.set_option(option);
+
+
+
+
+Getting the current option value:
+
+ boost::asio::ip::udp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::broadcast option;
+ socket.get_option(option);
+ bool is_set = option.value();
+
+
+
+
+
+
+[endsect]
+
+
+
+[section:bytes_readable socket_base::bytes_readable]
+
+IO control command to get the amount of data that can be read without blocking.
+
+ typedef implementation_defined bytes_readable;
+
+
+
+Implements the FIONREAD IO control command.
+
+
+[heading Example]
+
+
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::bytes_readable command(true);
+ socket.io_control(command);
+ std::size_t bytes_readable = command.get();
+
+
+
+
+
+
+[endsect]
+
+
+
+[section:debug socket_base::debug]
+
+Socket option to enable socket-level debugging.
+
+ typedef implementation_defined debug;
+
+
+
+Implements the SOL\_SOCKET/SO\_DEBUG socket option.
+
+
+[heading Examples]
+
+Setting the option:
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::debug option(true);
+ socket.set_option(option);
+
+
+
+
+Getting the current option value:
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::debug option;
+ socket.get_option(option);
+ bool is_set = option.value();
+
+
+
+
+
+
+[endsect]
+
+
+
+[section:do_not_route socket_base::do_not_route]
+
+Socket option to prevent routing, use local interfaces only.
+
+ typedef implementation_defined do_not_route;
+
+
+
+Implements the SOL\_SOCKET/SO\_DONTROUTE socket option.
+
+
+[heading Examples]
+
+Setting the option:
+
+ boost::asio::ip::udp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::do_not_route option(true);
+ socket.set_option(option);
+
+
+
+
+Getting the current option value:
+
+ boost::asio::ip::udp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::do_not_route option;
+ socket.get_option(option);
+ bool is_set = option.value();
+
+
+
+
+
+
+[endsect]
+
+
+
+[section:enable_connection_aborted socket_base::enable_connection_aborted]
+
+Socket option to report aborted connections on accept.
+
+ typedef implementation_defined enable_connection_aborted;
+
+
+
+Implements a custom socket option that determines whether or not an accept operation is permitted to fail with boost::asio::error::connection\_aborted. By default the option is false.
+
+
+[heading Examples]
+
+Setting the option:
+
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
+ ...
+ boost::asio::socket_base::enable_connection_aborted option(true);
+ acceptor.set_option(option);
+
+
+
+
+Getting the current option value:
+
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
+ ...
+ boost::asio::socket_base::enable_connection_aborted option;
+ acceptor.get_option(option);
+ bool is_set = option.value();
+
+
+
+
+
+
+[endsect]
+
+
+
+[section:keep_alive socket_base::keep_alive]
+
+Socket option to send keep-alives.
+
+ typedef implementation_defined keep_alive;
+
+
+
+Implements the SOL\_SOCKET/SO\_KEEPALIVE socket option.
+
+
+[heading Examples]
+
+Setting the option:
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::keep_alive option(true);
+ socket.set_option(option);
+
+
+
+
+Getting the current option value:
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::keep_alive option;
+ socket.get_option(option);
+ bool is_set = option.value();
+
 
 
-[endsect]
 
 
 
-[section:overload6 read (6 of 6 overloads)]
+[endsect]
 
-Attempt to read a certain amount of data from a stream before returning.
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator,
- typename CompletionCondition>
- std::size_t read(
- SyncReadStream & s,
- basic_streambuf< Allocator > & b,
- CompletionCondition completion_condition,
- boost::system::error_code & ec);
 
+[section:linger socket_base::linger]
 
-This function is used to read a certain number of bytes of data from a stream. The call will block until one of the following conditions is true:
+Socket option to specify whether the socket lingers on close if unsent data is present.
 
+ typedef implementation_defined linger;
 
-* 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.
 
+Implements the SOL\_SOCKET/SO\_LINGER socket option.
 
-[heading Parameters]
-
 
-[variablelist
+[heading Examples]
   
-[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+Setting the option:
 
-[[b][The basic\_streambuf object into which the data will be read.]]
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::linger option(true, 30);
+ socket.set_option(option);
 
-[[completion_condition][The function object to be called to determine whether the read operation is complete. The signature of the function object must be:
-``
- bool completion_condition(
- const boost::system::error_code& error, // Result of latest read_some
- // operation.
 
- std::size_t bytes_transferred // Number of bytes transferred
- // so far.
- );
 
-``
-A return value of true indicates that the read operation is complete. False indicates that further calls to the stream's read\_some function are required.]]
 
-[[ec][Set to indicate what error occurred, if any.]]
+Getting the current option value:
 
-]
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::linger option;
+ socket.get_option(option);
+ bool is_set = option.enabled();
+ unsigned short timeout = option.timeout();
 
-[heading Return Value]
-
-The number of bytes read. If an error occurs, returns the total number of bytes successfully transferred prior to the error.
 
 
 
-[endsect]
 
 
 [endsect]
 
-[section:read_until read_until]
 
-Read data into a streambuf until a delimiter is encountered.
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t ``[link boost_asio.reference.read_until.overload1 read_until]``(
- SyncReadStream & s,
- boost::asio::basic_streambuf< Allocator > & b,
- char delim);
+[section:max_connections socket_base::max_connections]
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t ``[link boost_asio.reference.read_until.overload2 read_until]``(
- SyncReadStream & s,
- boost::asio::basic_streambuf< Allocator > & b,
- char delim,
- boost::system::error_code & ec);
+The maximum length of the queue of pending incoming connections.
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t ``[link boost_asio.reference.read_until.overload3 read_until]``(
- SyncReadStream & s,
- boost::asio::basic_streambuf< Allocator > & b,
- const std::string & delim);
+ static const int max_connections = implementation_defined;
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t ``[link boost_asio.reference.read_until.overload4 read_until]``(
- SyncReadStream & s,
- boost::asio::basic_streambuf< Allocator > & b,
- const std::string & delim,
- boost::system::error_code & ec);
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t ``[link boost_asio.reference.read_until.overload5 read_until]``(
- SyncReadStream & s,
- boost::asio::basic_streambuf< Allocator > & b,
- const boost::regex & expr);
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t ``[link boost_asio.reference.read_until.overload6 read_until]``(
- SyncReadStream & s,
- boost::asio::basic_streambuf< Allocator > & b,
- const boost::regex & expr,
- boost::system::error_code & ec);
+[endsect]
 
 
-[section:overload1 read_until (1 of 6 overloads)]
 
-Read data into a streambuf until a delimiter is encountered.
+[section:message_do_not_route socket_base::message_do_not_route]
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t read_until(
- SyncReadStream & s,
- boost::asio::basic_streambuf< Allocator > & b,
- char delim);
+Specify that the data should not be subject to routing.
 
+ static const int message_do_not_route = implementation_defined;
 
-This function is used to read data into the specified streambuf until the streambuf's get area contains the specified delimiter. The call will block until one of the following conditions is true:
 
 
-* The get area of the streambuf contains the specified delimiter.
+[endsect]
 
-* An error occurred.
 
-This operation is implemented in terms of zero or more calls to the stream's read\_some function. If the streambuf's get area already contains the delimiter, the function returns immediately.
 
+[section:message_flags socket_base::message_flags]
+
+Bitmask type for flags that can be passed to send and receive operations.
 
-[heading Parameters]
-
+ typedef int message_flags;
 
-[variablelist
-
-[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
 
-[[b][A streambuf object into which the data will be read.]]
 
-[[delim][The delimiter character.]]
 
-]
+[endsect]
 
-[heading Return Value]
-
-The number of bytes in the streambuf's get area up to and including the delimiter.
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
+[section:message_out_of_band socket_base::message_out_of_band]
 
-]
+Process out-of-band data.
 
-[heading Example]
-
-To read data into a streambuf until a newline is encountered:
+ static const int message_out_of_band = implementation_defined;
 
- boost::asio::streambuf b;
- boost::asio::read_until(s, b, '\n');
- std::istream is(&b);
- std::string line;
- std::getline(is, line);
 
 
+[endsect]
 
 
 
+[section:message_peek socket_base::message_peek]
 
-[endsect]
+Peek at incoming data without removing it from the input queue.
 
+ static const int message_peek = implementation_defined;
 
 
-[section:overload2 read_until (2 of 6 overloads)]
 
-Read data into a streambuf until a delimiter is encountered.
+[endsect]
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t read_until(
- SyncReadStream & s,
- boost::asio::basic_streambuf< Allocator > & b,
- char delim,
- boost::system::error_code & ec);
 
 
-This function is used to read data into the specified streambuf until the streambuf's get area contains the specified delimiter. The call will block until one of the following conditions is true:
+[section:non_blocking_io socket_base::non_blocking_io]
 
+IO control command to set the blocking mode of the socket.
 
-* The get area of the streambuf contains the specified delimiter.
+ typedef implementation_defined non_blocking_io;
 
-* An error occurred.
 
-This operation is implemented in terms of zero or more calls to the stream's read\_some function. If the streambuf's get area already contains the delimiter, the function returns immediately.
 
+Implements the FIONBIO IO control command.
 
-[heading Parameters]
-
 
-[variablelist
+[heading Example]
   
-[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
 
-[[b][A streambuf object into which the data will be read.]]
 
-[[delim][The delimiter character.]]
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::non_blocking_io command(true);
+ socket.io_control(command);
 
-[[ec][Set to indicate what error occurred, if any.]]
 
-]
 
-[heading Return Value]
-
-The number of bytes in the streambuf's get area up to and including the delimiter. Returns 0 if an error occurred.
 
 
 
@@ -32240,265 +39968,243 @@
 
 
 
-[section:overload3 read_until (3 of 6 overloads)]
+[section:receive_buffer_size socket_base::receive_buffer_size]
 
-Read data into a streambuf until a delimiter is encountered.
+Socket option for the receive buffer size of a socket.
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t read_until(
- SyncReadStream & s,
- boost::asio::basic_streambuf< Allocator > & b,
- const std::string & delim);
+ typedef implementation_defined receive_buffer_size;
 
 
-This function is used to read data into the specified streambuf until the streambuf's get area contains the specified delimiter. The call will block until one of the following conditions is true:
 
+Implements the SOL\_SOCKET/SO\_RCVBUF socket option.
 
-* The get area of the streambuf contains the specified delimiter.
 
-* An error occurred.
+[heading Examples]
+
+Setting the option:
 
-This operation is implemented in terms of zero or more calls to the stream's read\_some function. If the streambuf's get area already contains the delimiter, the function returns immediately.
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::receive_buffer_size option(8192);
+ socket.set_option(option);
 
 
-[heading Parameters]
-
 
-[variablelist
-
-[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
 
-[[b][A streambuf object into which the data will be read.]]
+Getting the current option value:
 
-[[delim][The delimiter string.]]
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::receive_buffer_size option;
+ socket.get_option(option);
+ int size = option.value();
 
-]
 
-[heading Return Value]
-
-The number of bytes in the streambuf's get area up to and including the delimiter.
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
 
-]
 
-[heading Example]
-
-To read data into a streambuf until a newline is encountered:
+[endsect]
 
- boost::asio::streambuf b;
- boost::asio::read_until(s, b, "\r\n");
- std::istream is(&b);
- std::string line;
- std::getline(is, line);
 
 
+[section:receive_low_watermark socket_base::receive_low_watermark]
 
+Socket option for the receive low watermark.
 
+ typedef implementation_defined receive_low_watermark;
 
 
-[endsect]
 
+Implements the SOL\_SOCKET/SO\_RCVLOWAT socket option.
 
 
-[section:overload4 read_until (4 of 6 overloads)]
+[heading Examples]
+
+Setting the option:
 
-Read data into a streambuf until a delimiter is encountered.
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::receive_low_watermark option(1024);
+ socket.set_option(option);
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t read_until(
- SyncReadStream & s,
- boost::asio::basic_streambuf< Allocator > & b,
- const std::string & delim,
- boost::system::error_code & ec);
 
 
-This function is used to read data into the specified streambuf until the streambuf's get area contains the specified delimiter. The call will block until one of the following conditions is true:
 
+Getting the current option value:
 
-* The get area of the streambuf contains the specified delimiter.
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::receive_low_watermark option;
+ socket.get_option(option);
+ int size = option.value();
 
-* An error occurred.
 
-This operation is implemented in terms of zero or more calls to the stream's read\_some function. If the streambuf's get area already contains the delimiter, the function returns immediately.
 
 
-[heading Parameters]
-
 
-[variablelist
-
-[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
 
-[[b][A streambuf object into which the data will be read.]]
+[endsect]
 
-[[delim][The delimiter string.]]
 
-[[ec][Set to indicate what error occurred, if any.]]
 
-]
+[section:reuse_address socket_base::reuse_address]
 
-[heading Return Value]
-
-The number of bytes in the streambuf's get area up to and including the delimiter. Returns 0 if an error occurred.
+Socket option to allow the socket to be bound to an address that is already in use.
 
+ typedef implementation_defined reuse_address;
 
 
-[endsect]
 
+Implements the SOL\_SOCKET/SO\_REUSEADDR socket option.
 
 
-[section:overload5 read_until (5 of 6 overloads)]
+[heading Examples]
+
+Setting the option:
 
-Read data into a streambuf until a regular expression is located.
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
+ ...
+ boost::asio::socket_base::reuse_address option(true);
+ acceptor.set_option(option);
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t read_until(
- SyncReadStream & s,
- boost::asio::basic_streambuf< Allocator > & b,
- const boost::regex & expr);
 
 
-This function is used to read data into the specified streambuf until the streambuf's get area contains some data that matches a regular expression. The call will block until one of the following conditions is true:
 
+Getting the current option value:
 
-* A substring of the streambuf's get area matches the regular expression.
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
+ ...
+ boost::asio::socket_base::reuse_address option;
+ acceptor.get_option(option);
+ bool is_set = option.value();
 
-* An error occurred.
 
-This operation is implemented in terms of zero or more calls to the stream's read\_some function. If the streambuf's get area already contains data that matches the regular expression, the function returns immediately.
 
 
-[heading Parameters]
-
 
-[variablelist
-
-[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
 
-[[b][A streambuf object into which the data will be read.]]
+[endsect]
 
-[[expr][The regular expression.]]
 
-]
 
-[heading Return Value]
-
-The number of bytes in the streambuf's get area up to and including the substring that matches the regular expression.
+[section:send_buffer_size socket_base::send_buffer_size]
 
-[heading Exceptions]
-
+Socket option for the send buffer size of a socket.
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
+ typedef implementation_defined send_buffer_size;
 
-]
 
-[heading Example]
+
+Implements the SOL\_SOCKET/SO\_SNDBUF socket option.
+
+
+[heading Examples]
   
-To read data into a streambuf until a CR-LF sequence is encountered:
+Setting the option:
 
- boost::asio::streambuf b;
- boost::asio::read_until(s, b, boost::regex("\r\n"));
- std::istream is(&b);
- std::string line;
- std::getline(is, line);
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::send_buffer_size option(8192);
+ socket.set_option(option);
 
 
 
 
+Getting the current option value:
 
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::send_buffer_size option;
+ socket.get_option(option);
+ int size = option.value();
 
-[endsect]
 
 
 
-[section:overload6 read_until (6 of 6 overloads)]
 
-Read data into a streambuf until a regular expression is located.
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t read_until(
- SyncReadStream & s,
- boost::asio::basic_streambuf< Allocator > & b,
- const boost::regex & expr,
- boost::system::error_code & ec);
+[endsect]
 
 
-This function is used to read data into the specified streambuf until the streambuf's get area contains some data that matches a regular expression. The call will block until one of the following conditions is true:
 
+[section:send_low_watermark socket_base::send_low_watermark]
 
-* A substring of the streambuf's get area matches the regular expression.
+Socket option for the send low watermark.
 
-* An error occurred.
+ typedef implementation_defined send_low_watermark;
 
-This operation is implemented in terms of zero or more calls to the stream's read\_some function. If the streambuf's get area already contains data that matches the regular expression, the function returns immediately.
 
 
-[heading Parameters]
-
+Implements the SOL\_SOCKET/SO\_SNDLOWAT socket option.
 
-[variablelist
+
+[heading Examples]
   
-[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+Setting the option:
 
-[[b][A streambuf object into which the data will be read.]]
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::send_low_watermark option(1024);
+ socket.set_option(option);
 
-[[expr][The regular expression.]]
 
-[[ec][Set to indicate what error occurred, if any.]]
 
-]
 
-[heading Return Value]
-
-The number of bytes in the streambuf's get area up to and including the substring that matches the regular expression. Returns 0 if an error occurred.
+Getting the current option value:
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::send_low_watermark option;
+ socket.get_option(option);
+ int size = option.value();
+
 
 
 
-[endsect]
 
 
 [endsect]
 
-[section:service_already_exists service_already_exists]
 
-Exception thrown when trying to add a duplicate service to an io_service.
 
- class service_already_exists
+[section:shutdown_type socket_base::shutdown_type]
 
+Different ways a socket may be shutdown.
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+ enum shutdown_type
+
+[heading Values]
+[variablelist
 
   [
- [[link boost_asio.reference.service_already_exists.service_already_exists [*service_already_exists]]]
- []
+ [shutdown_receive]
+ [Shutdown the receive side of the socket. ]
   ]
-
+
+ [
+ [shutdown_send]
+ [Shutdown the send side of the socket. ]
+ ]
+
+ [
+ [shutdown_both]
+ [Shutdown both send and receive on the socket. ]
+ ]
+
 ]
 
 
-[section:service_already_exists service_already_exists::service_already_exists]
 
+[endsect]
 
 
- service_already_exists();
+
+[section:_socket_base socket_base::~socket_base]
+
+Protected destructor to prevent deletion through this type.
+
+ ~socket_base();
 
 
 
@@ -32508,14 +40214,14 @@
 
 [endsect]
 
-[section:socket_acceptor_service socket_acceptor_service]
+[section:ssl__basic_context ssl::basic_context]
 
-Default service implementation for a socket acceptor.
+SSL context.
 
   template<
- typename ``[link boost_asio.reference.Protocol Protocol]``>
- class socket_acceptor_service :
- public io_service::service
+ typename ``[link boost_asio.reference.Service Service]``>
+ class basic_context :
+ public ssl::context_base
 
 
 [heading Types]
@@ -32524,29 +40230,50 @@
 
   [
 
- [[link boost_asio.reference.socket_acceptor_service.endpoint_type [*endpoint_type]]]
- [The endpoint type. ]
+ [[link boost_asio.reference.ssl__basic_context.file_format [*file_format]]]
+ [File format types. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.socket_acceptor_service.implementation_type [*implementation_type]]]
- [The native type of the socket acceptor. ]
+ [[link boost_asio.reference.ssl__basic_context.impl_type [*impl_type]]]
+ [The native implementation type of the locking dispatcher. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.socket_acceptor_service.native_type [*native_type]]]
- [The native acceptor type. ]
+ [[link boost_asio.reference.ssl__basic_context.method [*method]]]
+ [Different methods supported by a context. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.socket_acceptor_service.protocol_type [*protocol_type]]]
- [The protocol type. ]
+ [[link boost_asio.reference.ssl__basic_context.options [*options]]]
+ [Bitmask type for SSL options. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.ssl__basic_context.password_purpose [*password_purpose]]]
+ [Purpose of PEM password. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.ssl__basic_context.service_type [*service_type]]]
+ [The type of the service that will be used to provide context operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.ssl__basic_context.verify_mode [*verify_mode]]]
+ [Bitmask type for peer verification. ]
   
   ]
 
@@ -32557,165 +40284,163 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.socket_acceptor_service.accept [*accept]]]
- [Accept a new connection. ]
+ [[link boost_asio.reference.ssl__basic_context.add_verify_path [*add_verify_path]]]
+ [Add a directory containing certificate authority files to be used for performing verification. ]
   ]
   
   [
- [[link boost_asio.reference.socket_acceptor_service.assign [*assign]]]
- [Assign an existing native acceptor to a socket acceptor. ]
+ [[link boost_asio.reference.ssl__basic_context.basic_context [*basic_context]]]
+ [Constructor. ]
   ]
   
   [
- [[link boost_asio.reference.socket_acceptor_service.async_accept [*async_accept]]]
- [Start an asynchronous accept. ]
+ [[link boost_asio.reference.ssl__basic_context.impl [*impl]]]
+ [Get the underlying implementation in the native type. ]
   ]
   
   [
- [[link boost_asio.reference.socket_acceptor_service.bind [*bind]]]
- [Bind the socket acceptor to the specified local endpoint. ]
+ [[link boost_asio.reference.ssl__basic_context.load_verify_file [*load_verify_file]]]
+ [Load a certification authority file for performing verification. ]
   ]
   
   [
- [[link boost_asio.reference.socket_acceptor_service.cancel [*cancel]]]
- [Cancel all asynchronous operations associated with the acceptor. ]
+ [[link boost_asio.reference.ssl__basic_context.set_options [*set_options]]]
+ [Set options on the context. ]
   ]
   
   [
- [[link boost_asio.reference.socket_acceptor_service.close [*close]]]
- [Close a socket acceptor implementation. ]
+ [[link boost_asio.reference.ssl__basic_context.set_password_callback [*set_password_callback]]]
+ [Set the password callback. ]
   ]
   
   [
- [[link boost_asio.reference.socket_acceptor_service.construct [*construct]]]
- [Construct a new socket acceptor implementation. ]
+ [[link boost_asio.reference.ssl__basic_context.set_verify_mode [*set_verify_mode]]]
+ [Set the peer verification mode. ]
   ]
   
   [
- [[link boost_asio.reference.socket_acceptor_service.destroy [*destroy]]]
- [Destroy a socket acceptor implementation. ]
+ [[link boost_asio.reference.ssl__basic_context.use_certificate_chain_file [*use_certificate_chain_file]]]
+ [Use a certificate chain from a file. ]
   ]
   
   [
- [[link boost_asio.reference.socket_acceptor_service.get_io_service [*get_io_service]]]
- [Get the io_service object that owns the service. ]
+ [[link boost_asio.reference.ssl__basic_context.use_certificate_file [*use_certificate_file]]]
+ [Use a certificate from a file. ]
   ]
   
   [
- [[link boost_asio.reference.socket_acceptor_service.get_option [*get_option]]]
- [Get a socket option. ]
+ [[link boost_asio.reference.ssl__basic_context.use_private_key_file [*use_private_key_file]]]
+ [Use a private key from a file. ]
   ]
   
   [
- [[link boost_asio.reference.socket_acceptor_service.io_control [*io_control]]]
- [Perform an IO control command on the socket. ]
+ [[link boost_asio.reference.ssl__basic_context.use_rsa_private_key_file [*use_rsa_private_key_file]]]
+ [Use an RSA private key from a file. ]
   ]
   
   [
- [[link boost_asio.reference.socket_acceptor_service.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
+ [[link boost_asio.reference.ssl__basic_context.use_tmp_dh_file [*use_tmp_dh_file]]]
+ [Use the specified file to obtain the temporary Diffie-Hellman parameters. ]
   ]
   
   [
- [[link boost_asio.reference.socket_acceptor_service.is_open [*is_open]]]
- [Determine whether the acceptor is open. ]
+ [[link boost_asio.reference.ssl__basic_context._basic_context [*~basic_context]]]
+ [Destructor. ]
   ]
   
+]
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
   [
- [[link boost_asio.reference.socket_acceptor_service.listen [*listen]]]
- [Place the socket acceptor into the state where it will listen for new connections. ]
+ [[link boost_asio.reference.ssl__basic_context.default_workarounds [*default_workarounds]]]
+ [Implement various bug workarounds. ]
   ]
-
+
   [
- [[link boost_asio.reference.socket_acceptor_service.local_endpoint [*local_endpoint]]]
- [Get the local endpoint. ]
+ [[link boost_asio.reference.ssl__basic_context.no_sslv2 [*no_sslv2]]]
+ [Disable SSL v2. ]
   ]
-
+
   [
- [[link boost_asio.reference.socket_acceptor_service.native [*native]]]
- [Get the native acceptor implementation. ]
+ [[link boost_asio.reference.ssl__basic_context.no_sslv3 [*no_sslv3]]]
+ [Disable SSL v3. ]
   ]
-
+
   [
- [[link boost_asio.reference.socket_acceptor_service.open [*open]]]
- [Open a new socket acceptor implementation. ]
+ [[link boost_asio.reference.ssl__basic_context.no_tlsv1 [*no_tlsv1]]]
+ [Disable TLS v1. ]
   ]
-
+
   [
- [[link boost_asio.reference.socket_acceptor_service.set_option [*set_option]]]
- [Set a socket option. ]
+ [[link boost_asio.reference.ssl__basic_context.single_dh_use [*single_dh_use]]]
+ [Always create a new key when using tmp_dh parameters. ]
   ]
-
+
   [
- [[link boost_asio.reference.socket_acceptor_service.shutdown_service [*shutdown_service]]]
- [Destroy all user-defined handler objects owned by the service. ]
+ [[link boost_asio.reference.ssl__basic_context.verify_client_once [*verify_client_once]]]
+ [Do not request client certificate on renegotiation. Ignored unless verify_peer is set. ]
   ]
-
+
   [
- [[link boost_asio.reference.socket_acceptor_service.socket_acceptor_service [*socket_acceptor_service]]]
- [Construct a new socket acceptor service for the specified io_service. ]
+ [[link boost_asio.reference.ssl__basic_context.verify_fail_if_no_peer_cert [*verify_fail_if_no_peer_cert]]]
+ [Fail verification if the peer has no certificate. Ignored unless verify_peer is set. ]
   ]
-
-]
 
-[heading Data Members]
-[table
- [[Name][Description]]
+ [
+ [[link boost_asio.reference.ssl__basic_context.verify_none [*verify_none]]]
+ [No verification. ]
+ ]
 
   [
- [[link boost_asio.reference.socket_acceptor_service.id [*id]]]
- [The unique service identifier. ]
+ [[link boost_asio.reference.ssl__basic_context.verify_peer [*verify_peer]]]
+ [Verify the peer. ]
   ]
 
 ]
 
+[section:add_verify_path ssl::basic_context::add_verify_path]
 
-[section:accept socket_acceptor_service::accept]
+Add a directory containing certificate authority files to be used for performing verification.
 
-Accept a new connection.
+ void ``[link boost_asio.reference.ssl__basic_context.add_verify_path.overload1 add_verify_path]``(
+ const std::string & path);
 
- template<
- typename ``[link boost_asio.reference.SocketService SocketService]``>
- boost::system::error_code accept(
- implementation_type & impl,
- basic_socket< protocol_type, SocketService > & peer,
- endpoint_type * peer_endpoint,
+ boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.add_verify_path.overload2 add_verify_path]``(
+ const std::string & path,
       boost::system::error_code & ec);
 
 
+[section:overload1 ssl::basic_context::add_verify_path (1 of 2 overloads)]
 
-[endsect]
-
-
-
-[section:assign socket_acceptor_service::assign]
+Add a directory containing certificate authority files to be used for performing verification.
 
-Assign an existing native acceptor to a socket acceptor.
+ void add_verify_path(
+ const std::string & path);
 
- boost::system::error_code assign(
- implementation_type & impl,
- const protocol_type & protocol,
- const native_type & native_acceptor,
- boost::system::error_code & ec);
 
+This function is used to specify the name of a directory containing certification authority certificates. Each file in the directory must contain a single certificate. The files must be named using the subject name's hash and an extension of ".0".
 
 
-[endsect]
+[heading Parameters]
+
 
+[variablelist
+
+[[path][The name of a directory containing the certificates.]]
 
+]
 
-[section:async_accept socket_acceptor_service::async_accept]
+[heading Exceptions]
+
 
-Start an asynchronous accept.
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
- template<
- typename ``[link boost_asio.reference.SocketService SocketService]``,
- typename ``[link boost_asio.reference.AcceptHandler AcceptHandler]``>
- void async_accept(
- implementation_type & impl,
- basic_socket< protocol_type, SocketService > & peer,
- endpoint_type * peer_endpoint,
- AcceptHandler handler);
+]
 
 
 
@@ -32723,81 +40448,89 @@
 
 
 
-[section:bind socket_acceptor_service::bind]
+[section:overload2 ssl::basic_context::add_verify_path (2 of 2 overloads)]
 
-Bind the socket acceptor to the specified local endpoint.
+Add a directory containing certificate authority files to be used for performing verification.
 
- boost::system::error_code bind(
- implementation_type & impl,
- const endpoint_type & endpoint,
+ boost::system::error_code add_verify_path(
+ const std::string & path,
       boost::system::error_code & ec);
 
 
-
-[endsect]
+This function is used to specify the name of a directory containing certification authority certificates. Each file in the directory must contain a single certificate. The files must be named using the subject name's hash and an extension of ".0".
 
 
+[heading Parameters]
+
 
-[section:cancel socket_acceptor_service::cancel]
+[variablelist
+
+[[path][The name of a directory containing the certificates.]]
 
-Cancel all asynchronous operations associated with the acceptor.
+[[ec][Set to indicate what error occurred, if any. ]]
 
- boost::system::error_code cancel(
- implementation_type & impl,
- boost::system::error_code & ec);
+]
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:close socket_acceptor_service::close]
 
-Close a socket acceptor implementation.
+[section:basic_context ssl::basic_context::basic_context]
 
- boost::system::error_code close(
- implementation_type & impl,
- boost::system::error_code & ec);
+Constructor.
 
+ basic_context(
+ boost::asio::io_service & io_service,
+ method m);
 
 
-[endsect]
 
+[endsect]
 
 
-[section:construct socket_acceptor_service::construct]
 
-Construct a new socket acceptor implementation.
+[section:default_workarounds ssl::basic_context::default_workarounds]
 
- void construct(
- implementation_type & impl);
 
+['Inherited from ssl::context_base.]
 
+Implement various bug workarounds.
 
-[endsect]
+ static const int default_workarounds = implementation_defined;
 
 
 
-[section:destroy socket_acceptor_service::destroy]
+[endsect]
 
-Destroy a socket acceptor implementation.
 
- void destroy(
- implementation_type & impl);
 
+[section:file_format ssl::basic_context::file_format]
 
 
-[endsect]
+['Inherited from ssl::context_base.]
 
+File format types.
 
+ enum file_format
 
-[section:endpoint_type socket_acceptor_service::endpoint_type]
+[heading Values]
+[variablelist
 
-The endpoint type.
+ [
+ [asn1]
+ [ASN.1 file. ]
+ ]
 
- typedef protocol_type::endpoint endpoint_type;
+ [
+ [pem]
+ [PEM file. ]
+ ]
 
+]
 
 
 
@@ -32805,73 +40538,72 @@
 
 
 
-[section:get_io_service socket_acceptor_service::get_io_service]
-
+[section:impl ssl::basic_context::impl]
 
-['Inherited from io_service.]
+Get the underlying implementation in the native type.
 
-Get the io_service object that owns the service.
+ impl_type impl();
 
- boost::asio::io_service & get_io_service();
 
+This function may be used to obtain the underlying implementation of the context. This is intended to allow access to context functionality that is not otherwise provided.
 
 
 [endsect]
 
 
 
-[section:get_option socket_acceptor_service::get_option]
-
-Get a socket option.
-
- template<
- typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
- boost::system::error_code get_option(
- const implementation_type & impl,
- GettableSocketOption & option,
- boost::system::error_code & ec) const;
-
+[section:impl_type ssl::basic_context::impl_type]
 
+The native implementation type of the locking dispatcher.
 
-[endsect]
+ typedef service_type::impl_type impl_type;
 
 
 
-[section:id socket_acceptor_service::id]
 
-The unique service identifier.
+[endsect]
 
- static boost::asio::io_service::id id;
 
+[section:load_verify_file ssl::basic_context::load_verify_file]
 
+Load a certification authority file for performing verification.
 
-[endsect]
+ void ``[link boost_asio.reference.ssl__basic_context.load_verify_file.overload1 load_verify_file]``(
+ const std::string & filename);
 
+ boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.load_verify_file.overload2 load_verify_file]``(
+ const std::string & filename,
+ boost::system::error_code & ec);
 
 
-[section:implementation_type socket_acceptor_service::implementation_type]
+[section:overload1 ssl::basic_context::load_verify_file (1 of 2 overloads)]
 
-The native type of the socket acceptor.
+Load a certification authority file for performing verification.
 
- typedef implementation_defined implementation_type;
+ void load_verify_file(
+ const std::string & filename);
 
 
+This function is used to load one or more trusted certification authorities from a file.
 
 
-[endsect]
+[heading Parameters]
+
 
+[variablelist
+
+[[filename][The name of a file containing certification authority certificates in PEM format.]]
 
+]
 
-[section:io_control socket_acceptor_service::io_control]
+[heading Exceptions]
+
 
-Perform an IO control command on the socket.
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
- template<
- typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
- boost::system::error_code io_control(
- implementation_type & impl,
- IoControlCommand & command,
- boost::system::error_code & ec);
+]
 
 
 
@@ -32879,69 +40611,110 @@
 
 
 
-[section:io_service socket_acceptor_service::io_service]
-
+[section:overload2 ssl::basic_context::load_verify_file (2 of 2 overloads)]
 
-['Inherited from io_service.]
+Load a certification authority file for performing verification.
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+ boost::system::error_code load_verify_file(
+ const std::string & filename,
+ boost::system::error_code & ec);
 
- boost::asio::io_service & io_service();
 
+This function is used to load the certificates for one or more trusted certification authorities from a file.
 
 
-[endsect]
+[heading Parameters]
+
 
+[variablelist
+
+[[filename][The name of a file containing certification authority certificates in PEM format.]]
 
+[[ec][Set to indicate what error occurred, if any. ]]
 
-[section:is_open socket_acceptor_service::is_open]
+]
 
-Determine whether the acceptor is open.
 
- bool is_open(
- const implementation_type & impl) const;
 
+[endsect]
 
 
 [endsect]
 
 
+[section:method ssl::basic_context::method]
 
-[section:listen socket_acceptor_service::listen]
-
-Place the socket acceptor into the state where it will listen for new connections.
 
- boost::system::error_code listen(
- implementation_type & impl,
- int backlog,
- boost::system::error_code & ec);
+['Inherited from ssl::context_base.]
 
+Different methods supported by a context.
 
+ enum method
 
-[endsect]
+[heading Values]
+[variablelist
 
+ [
+ [sslv2]
+ [Generic SSL version 2. ]
+ ]
 
+ [
+ [sslv2_client]
+ [SSL version 2 client. ]
+ ]
 
-[section:local_endpoint socket_acceptor_service::local_endpoint]
+ [
+ [sslv2_server]
+ [SSL version 2 server. ]
+ ]
 
-Get the local endpoint.
+ [
+ [sslv3]
+ [Generic SSL version 3. ]
+ ]
 
- endpoint_type local_endpoint(
- const implementation_type & impl,
- boost::system::error_code & ec) const;
+ [
+ [sslv3_client]
+ [SSL version 3 client. ]
+ ]
 
+ [
+ [sslv3_server]
+ [SSL version 3 server. ]
+ ]
 
+ [
+ [tlsv1]
+ [Generic TLS version 1. ]
+ ]
 
-[endsect]
+ [
+ [tlsv1_client]
+ [TLS version 1 client. ]
+ ]
 
+ [
+ [tlsv1_server]
+ [TLS version 1 server. ]
+ ]
 
+ [
+ [sslv23]
+ [Generic SSL/TLS. ]
+ ]
 
-[section:native socket_acceptor_service::native]
+ [
+ [sslv23_client]
+ [SSL/TLS client. ]
+ ]
 
-Get the native acceptor implementation.
+ [
+ [sslv23_server]
+ [SSL/TLS server. ]
+ ]
 
- native_type native(
- implementation_type & impl);
+]
 
 
 
@@ -32949,12 +40722,14 @@
 
 
 
-[section:native_type socket_acceptor_service::native_type]
+[section:no_sslv2 ssl::basic_context::no_sslv2]
 
-The native acceptor type.
 
- typedef implementation_defined native_type;
+['Inherited from ssl::context_base.]
+
+Disable SSL v2.
 
+ static const int no_sslv2 = implementation_defined;
 
 
 
@@ -32962,14 +40737,14 @@
 
 
 
-[section:open socket_acceptor_service::open]
+[section:no_sslv3 ssl::basic_context::no_sslv3]
 
-Open a new socket acceptor implementation.
 
- boost::system::error_code open(
- implementation_type & impl,
- const protocol_type & protocol,
- boost::system::error_code & ec);
+['Inherited from ssl::context_base.]
+
+Disable SSL v3.
+
+ static const int no_sslv3 = implementation_defined;
 
 
 
@@ -32977,12 +40752,14 @@
 
 
 
-[section:protocol_type socket_acceptor_service::protocol_type]
+[section:no_tlsv1 ssl::basic_context::no_tlsv1]
 
-The protocol type.
 
- typedef Protocol protocol_type;
+['Inherited from ssl::context_base.]
+
+Disable TLS v1.
 
+ static const int no_tlsv1 = implementation_defined;
 
 
 
@@ -32990,41 +40767,45 @@
 
 
 
-[section:set_option socket_acceptor_service::set_option]
+[section:options ssl::basic_context::options]
 
-Set a socket option.
 
- template<
- typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
- boost::system::error_code set_option(
- implementation_type & impl,
- const SettableSocketOption & option,
- boost::system::error_code & ec);
+['Inherited from ssl::context_base.]
 
+Bitmask type for SSL options.
 
+ typedef int options;
 
-[endsect]
 
 
 
-[section:shutdown_service socket_acceptor_service::shutdown_service]
+[endsect]
 
-Destroy all user-defined handler objects owned by the service.
 
- void shutdown_service();
 
+[section:password_purpose ssl::basic_context::password_purpose]
 
 
-[endsect]
+['Inherited from ssl::context_base.]
 
+Purpose of PEM password.
 
+ enum password_purpose
 
-[section:socket_acceptor_service socket_acceptor_service::socket_acceptor_service]
+[heading Values]
+[variablelist
 
-Construct a new socket acceptor service for the specified io_service.
+ [
+ [for_reading]
+ [The password is needed for reading/decryption. ]
+ ]
 
- socket_acceptor_service(
- boost::asio::io_service & io_service);
+ [
+ [for_writing]
+ [The password is needed for writing/encryption. ]
+ ]
+
+]
 
 
 
@@ -33032,186 +40813,149 @@
 
 
 
-[endsect]
+[section:service_type ssl::basic_context::service_type]
 
-[section:socket_base socket_base]
+The type of the service that will be used to provide context operations.
 
-The socket_base class is used as a base for the basic_stream_socket and basic_datagram_socket class templates so that we have a common place to define the shutdown_type and enum.
+ typedef Service service_type;
 
- class socket_base
 
 
-[heading Types]
-[table
- [[Name][Description]]
 
- [
+[endsect]
 
- [[link boost_asio.reference.socket_base.broadcast [*broadcast]]]
- [Socket option to permit sending of broadcast messages. ]
-
- ]
 
- [
+[section:set_options ssl::basic_context::set_options]
 
- [[link boost_asio.reference.socket_base.bytes_readable [*bytes_readable]]]
- [IO control command to get the amount of data that can be read without blocking. ]
-
- ]
+Set options on the context.
 
- [
+ void ``[link boost_asio.reference.ssl__basic_context.set_options.overload1 set_options]``(
+ options o);
 
- [[link boost_asio.reference.socket_base.debug [*debug]]]
- [Socket option to enable socket-level debugging. ]
-
- ]
+ boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.set_options.overload2 set_options]``(
+ options o,
+ boost::system::error_code & ec);
 
- [
 
- [[link boost_asio.reference.socket_base.do_not_route [*do_not_route]]]
- [Socket option to prevent routing, use local interfaces only. ]
-
- ]
+[section:overload1 ssl::basic_context::set_options (1 of 2 overloads)]
 
- [
+Set options on the context.
 
- [[link boost_asio.reference.socket_base.enable_connection_aborted [*enable_connection_aborted]]]
- [Socket option to report aborted connections on accept. ]
-
- ]
+ void set_options(
+ options o);
 
- [
 
- [[link boost_asio.reference.socket_base.keep_alive [*keep_alive]]]
- [Socket option to send keep-alives. ]
-
- ]
+This function may be used to configure the SSL options used by the context.
 
- [
 
- [[link boost_asio.reference.socket_base.linger [*linger]]]
- [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+[heading Parameters]
+
+
+[variablelist
   
- ]
+[[o][A bitmask of options. The available option values are defined in the context\_base class. The options are bitwise-ored with any existing value for the options.]]
 
- [
+]
 
- [[link boost_asio.reference.socket_base.message_flags [*message_flags]]]
- [Bitmask type for flags that can be passed to send and receive operations. ]
+[heading Exceptions]
+
+
+[variablelist
   
- ]
+[[boost::system::system_error][Thrown on failure. ]]
 
- [
+]
 
- [[link boost_asio.reference.socket_base.non_blocking_io [*non_blocking_io]]]
- [IO control command to set the blocking mode of the socket. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.socket_base.receive_buffer_size [*receive_buffer_size]]]
- [Socket option for the receive buffer size of a socket. ]
-
- ]
+[endsect]
 
- [
 
- [[link boost_asio.reference.socket_base.receive_low_watermark [*receive_low_watermark]]]
- [Socket option for the receive low watermark. ]
-
- ]
 
- [
+[section:overload2 ssl::basic_context::set_options (2 of 2 overloads)]
 
- [[link boost_asio.reference.socket_base.reuse_address [*reuse_address]]]
- [Socket option to allow the socket to be bound to an address that is already in use. ]
-
- ]
+Set options on the context.
 
- [
+ boost::system::error_code set_options(
+ options o,
+ boost::system::error_code & ec);
 
- [[link boost_asio.reference.socket_base.send_buffer_size [*send_buffer_size]]]
- [Socket option for the send buffer size of a socket. ]
-
- ]
 
- [
+This function may be used to configure the SSL options used by the context.
 
- [[link boost_asio.reference.socket_base.send_low_watermark [*send_low_watermark]]]
- [Socket option for the send low watermark. ]
-
- ]
 
- [
+[heading Parameters]
+
 
- [[link boost_asio.reference.socket_base.shutdown_type [*shutdown_type]]]
- [Different ways a socket may be shutdown. ]
+[variablelist
   
- ]
+[[o][A bitmask of options. The available option values are defined in the context\_base class. The options are bitwise-ored with any existing value for the options.]]
 
-]
+[[ec][Set to indicate what error occurred, if any. ]]
 
-[heading Data Members]
-[table
- [[Name][Description]]
+]
 
- [
- [[link boost_asio.reference.socket_base.max_connections [*max_connections]]]
- [The maximum length of the queue of pending incoming connections. ]
- ]
 
- [
- [[link boost_asio.reference.socket_base.message_do_not_route [*message_do_not_route]]]
- [Specify that the data should not be subject to routing. ]
- ]
 
- [
- [[link boost_asio.reference.socket_base.message_out_of_band [*message_out_of_band]]]
- [Process out-of-band data. ]
- ]
+[endsect]
 
- [
- [[link boost_asio.reference.socket_base.message_peek [*message_peek]]]
- [Peek at incoming data without removing it from the input queue. ]
- ]
 
-]
+[endsect]
 
+[section:set_password_callback ssl::basic_context::set_password_callback]
 
-[section:broadcast socket_base::broadcast]
+Set the password callback.
 
-Socket option to permit sending of broadcast messages.
+ template<
+ typename PasswordCallback>
+ void ``[link boost_asio.reference.ssl__basic_context.set_password_callback.overload1 set_password_callback]``(
+ PasswordCallback callback);
 
- typedef implementation_defined broadcast;
+ template<
+ typename PasswordCallback>
+ boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.set_password_callback.overload2 set_password_callback]``(
+ PasswordCallback callback,
+ boost::system::error_code & ec);
 
 
+[section:overload1 ssl::basic_context::set_password_callback (1 of 2 overloads)]
 
-Implements the SOL\_SOCKET/SO\_BROADCAST socket option.
+Set the password callback.
 
+ template<
+ typename PasswordCallback>
+ void set_password_callback(
+ PasswordCallback callback);
 
-[heading Examples]
-
-Setting the option:
 
- boost::asio::ip::udp::socket socket(io_service);
- ...
- boost::asio::socket_base::broadcast option(true);
- socket.set_option(option);
+This function is used to specify a callback function to obtain password information about an encrypted key in PEM format.
 
 
+[heading Parameters]
+
 
+[variablelist
+
+[[callback][The function object to be used for obtaining the password. The function signature of the handler must be:
+``
+ std::string password_callback(
+ std::size_t max_length, // The maximum size for a password.
+ password_purpose purpose // Whether password is for reading or writing.
+ );
 
-Getting the current option value:
+``
+The return value of the callback is a string containing the password.]]
 
- boost::asio::ip::udp::socket socket(io_service);
- ...
- boost::asio::socket_base::broadcast option;
- socket.get_option(option);
- bool is_set = option.value();
+]
 
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
+]
 
 
 
@@ -33219,69 +40963,86 @@
 
 
 
-[section:bytes_readable socket_base::bytes_readable]
+[section:overload2 ssl::basic_context::set_password_callback (2 of 2 overloads)]
 
-IO control command to get the amount of data that can be read without blocking.
+Set the password callback.
 
- typedef implementation_defined bytes_readable;
+ template<
+ typename PasswordCallback>
+ boost::system::error_code set_password_callback(
+ PasswordCallback callback,
+ boost::system::error_code & ec);
 
 
+This function is used to specify a callback function to obtain password information about an encrypted key in PEM format.
 
-Implements the FIONREAD IO control command.
 
+[heading Parameters]
+
 
-[heading Example]
+[variablelist
   
+[[callback][The function object to be used for obtaining the password. The function signature of the handler must be:
+``
+ std::string password_callback(
+ std::size_t max_length, // The maximum size for a password.
+ password_purpose purpose // Whether password is for reading or writing.
+ );
 
+``
+The return value of the callback is a string containing the password.]]
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::bytes_readable command(true);
- socket.io_control(command);
- std::size_t bytes_readable = command.get();
-
-
+[[ec][Set to indicate what error occurred, if any. ]]
 
+]
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:debug socket_base::debug]
+[section:set_verify_mode ssl::basic_context::set_verify_mode]
 
-Socket option to enable socket-level debugging.
+Set the peer verification mode.
 
- typedef implementation_defined debug;
+ void ``[link boost_asio.reference.ssl__basic_context.set_verify_mode.overload1 set_verify_mode]``(
+ verify_mode v);
 
+ boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.set_verify_mode.overload2 set_verify_mode]``(
+ verify_mode v,
+ boost::system::error_code & ec);
 
 
-Implements the SOL\_SOCKET/SO\_DEBUG socket option.
+[section:overload1 ssl::basic_context::set_verify_mode (1 of 2 overloads)]
 
+Set the peer verification mode.
 
-[heading Examples]
-
-Setting the option:
+ void set_verify_mode(
+ verify_mode v);
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::debug option(true);
- socket.set_option(option);
 
+This function may be used to configure the peer verification mode used by the context.
 
 
+[heading Parameters]
+
 
-Getting the current option value:
+[variablelist
+
+[[v][A bitmask of peer verification modes. The available verify\_mode values are defined in the context\_base class.]]
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::debug option;
- socket.get_option(option);
- bool is_set = option.value();
+]
 
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
+]
 
 
 
@@ -33289,79 +41050,91 @@
 
 
 
-[section:do_not_route socket_base::do_not_route]
+[section:overload2 ssl::basic_context::set_verify_mode (2 of 2 overloads)]
 
-Socket option to prevent routing, use local interfaces only.
+Set the peer verification mode.
 
- typedef implementation_defined do_not_route;
+ boost::system::error_code set_verify_mode(
+ verify_mode v,
+ boost::system::error_code & ec);
 
 
+This function may be used to configure the peer verification mode used by the context.
 
-Implements the SOL\_SOCKET/SO\_DONTROUTE socket option.
 
+[heading Parameters]
+
 
-[heading Examples]
+[variablelist
   
-Setting the option:
+[[v][A bitmask of peer verification modes. The available verify\_mode values are defined in the context\_base class.]]
 
- boost::asio::ip::udp::socket socket(io_service);
- ...
- boost::asio::socket_base::do_not_route option(true);
- socket.set_option(option);
+[[ec][Set to indicate what error occurred, if any. ]]
 
+]
 
 
 
-Getting the current option value:
+[endsect]
 
- boost::asio::ip::udp::socket socket(io_service);
- ...
- boost::asio::socket_base::do_not_route option;
- socket.get_option(option);
- bool is_set = option.value();
 
+[endsect]
 
 
+[section:single_dh_use ssl::basic_context::single_dh_use]
 
 
+['Inherited from ssl::context_base.]
 
-[endsect]
+Always create a new key when using tmp_dh parameters.
 
+ static const int single_dh_use = implementation_defined;
 
 
-[section:enable_connection_aborted socket_base::enable_connection_aborted]
 
-Socket option to report aborted connections on accept.
+[endsect]
 
- typedef implementation_defined enable_connection_aborted;
 
+[section:use_certificate_chain_file ssl::basic_context::use_certificate_chain_file]
 
+Use a certificate chain from a file.
 
-Implements a custom socket option that determines whether or not an accept operation is permitted to fail with boost::asio::error::connection\_aborted. By default the option is false.
+ void ``[link boost_asio.reference.ssl__basic_context.use_certificate_chain_file.overload1 use_certificate_chain_file]``(
+ const std::string & filename);
 
+ boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.use_certificate_chain_file.overload2 use_certificate_chain_file]``(
+ const std::string & filename,
+ boost::system::error_code & ec);
 
-[heading Examples]
-
-Setting the option:
 
- boost::asio::ip::tcp::acceptor acceptor(io_service);
- ...
- boost::asio::socket_base::enable_connection_aborted option(true);
- acceptor.set_option(option);
+[section:overload1 ssl::basic_context::use_certificate_chain_file (1 of 2 overloads)]
+
+Use a certificate chain from a file.
+
+ void use_certificate_chain_file(
+ const std::string & filename);
 
 
+This function is used to load a certificate chain into the context from a file.
 
 
-Getting the current option value:
+[heading Parameters]
+
 
- boost::asio::ip::tcp::acceptor acceptor(io_service);
- ...
- boost::asio::socket_base::enable_connection_aborted option;
- acceptor.get_option(option);
- bool is_set = option.value();
+[variablelist
+
+[[filename][The name of the file containing the certificate. The file must use the PEM format.]]
+
+]
 
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
+]
 
 
 
@@ -33369,117 +41142,166 @@
 
 
 
-[section:keep_alive socket_base::keep_alive]
+[section:overload2 ssl::basic_context::use_certificate_chain_file (2 of 2 overloads)]
 
-Socket option to send keep-alives.
+Use a certificate chain from a file.
 
- typedef implementation_defined keep_alive;
+ boost::system::error_code use_certificate_chain_file(
+ const std::string & filename,
+ boost::system::error_code & ec);
 
 
+This function is used to load a certificate chain into the context from a file.
 
-Implements the SOL\_SOCKET/SO\_KEEPALIVE socket option.
 
+[heading Parameters]
+
 
-[heading Examples]
+[variablelist
   
-Setting the option:
+[[filename][The name of the file containing the certificate. The file must use the PEM format.]]
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::keep_alive option(true);
- socket.set_option(option);
+[[ec][Set to indicate what error occurred, if any. ]]
 
+]
 
 
 
-Getting the current option value:
+[endsect]
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::keep_alive option;
- socket.get_option(option);
- bool is_set = option.value();
 
+[endsect]
 
+[section:use_certificate_file ssl::basic_context::use_certificate_file]
 
+Use a certificate from a file.
 
+ void ``[link boost_asio.reference.ssl__basic_context.use_certificate_file.overload1 use_certificate_file]``(
+ const std::string & filename,
+ file_format format);
 
+ boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.use_certificate_file.overload2 use_certificate_file]``(
+ const std::string & filename,
+ file_format format,
+ boost::system::error_code & ec);
 
-[endsect]
 
+[section:overload1 ssl::basic_context::use_certificate_file (1 of 2 overloads)]
 
+Use a certificate from a file.
 
-[section:linger socket_base::linger]
+ void use_certificate_file(
+ const std::string & filename,
+ file_format format);
 
-Socket option to specify whether the socket lingers on close if unsent data is present.
 
- typedef implementation_defined linger;
+This function is used to load a certificate into the context from a file.
 
 
+[heading Parameters]
+
 
-Implements the SOL\_SOCKET/SO\_LINGER socket option.
+[variablelist
+
+[[filename][The name of the file containing the certificate.]]
 
+[[format][The file format (ASN.1 or PEM).]]
 
-[heading Examples]
+]
+
+[heading Exceptions]
+
+
+[variablelist
   
-Setting the option:
+[[boost::system::system_error][Thrown on failure. ]]
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::linger option(true, 30);
- socket.set_option(option);
+]
 
 
 
+[endsect]
 
-Getting the current option value:
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::linger option;
- socket.get_option(option);
- bool is_set = option.enabled();
- unsigned short timeout = option.timeout();
 
+[section:overload2 ssl::basic_context::use_certificate_file (2 of 2 overloads)]
+
+Use a certificate from a file.
+
+ boost::system::error_code use_certificate_file(
+ const std::string & filename,
+ file_format format,
+ boost::system::error_code & ec);
 
 
+This function is used to load a certificate into the context from a file.
 
 
+[heading Parameters]
+
 
-[endsect]
+[variablelist
+
+[[filename][The name of the file containing the certificate.]]
 
+[[format][The file format (ASN.1 or PEM).]]
 
+[[ec][Set to indicate what error occurred, if any. ]]
 
-[section:max_connections socket_base::max_connections]
+]
 
-The maximum length of the queue of pending incoming connections.
 
- static const int max_connections = implementation_defined;
 
+[endsect]
 
 
 [endsect]
 
+[section:use_private_key_file ssl::basic_context::use_private_key_file]
 
+Use a private key from a file.
 
-[section:message_do_not_route socket_base::message_do_not_route]
+ void ``[link boost_asio.reference.ssl__basic_context.use_private_key_file.overload1 use_private_key_file]``(
+ const std::string & filename,
+ file_format format);
 
-Specify that the data should not be subject to routing.
+ boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.use_private_key_file.overload2 use_private_key_file]``(
+ const std::string & filename,
+ file_format format,
+ boost::system::error_code & ec);
 
- static const int message_do_not_route = implementation_defined;
 
+[section:overload1 ssl::basic_context::use_private_key_file (1 of 2 overloads)]
 
+Use a private key from a file.
 
-[endsect]
+ void use_private_key_file(
+ const std::string & filename,
+ file_format format);
 
 
+This function is used to load a private key into the context from a file.
 
-[section:message_flags socket_base::message_flags]
 
-Bitmask type for flags that can be passed to send and receive operations.
+[heading Parameters]
+
 
- typedef int message_flags;
+[variablelist
+
+[[filename][The name of the file containing the private key.]]
+
+[[format][The file format (ASN.1 or PEM).]]
+
+]
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
+]
 
 
 
@@ -33487,132 +41309,164 @@
 
 
 
-[section:message_out_of_band socket_base::message_out_of_band]
+[section:overload2 ssl::basic_context::use_private_key_file (2 of 2 overloads)]
 
-Process out-of-band data.
+Use a private key from a file.
 
- static const int message_out_of_band = implementation_defined;
+ boost::system::error_code use_private_key_file(
+ const std::string & filename,
+ file_format format,
+ boost::system::error_code & ec);
 
 
+This function is used to load a private key into the context from a file.
 
-[endsect]
 
+[heading Parameters]
+
 
+[variablelist
+
+[[filename][The name of the file containing the private key.]]
 
-[section:message_peek socket_base::message_peek]
+[[format][The file format (ASN.1 or PEM).]]
 
-Peek at incoming data without removing it from the input queue.
+[[ec][Set to indicate what error occurred, if any. ]]
 
- static const int message_peek = implementation_defined;
+]
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:non_blocking_io socket_base::non_blocking_io]
-
-IO control command to set the blocking mode of the socket.
+[section:use_rsa_private_key_file ssl::basic_context::use_rsa_private_key_file]
 
- typedef implementation_defined non_blocking_io;
+Use an RSA private key from a file.
 
+ void ``[link boost_asio.reference.ssl__basic_context.use_rsa_private_key_file.overload1 use_rsa_private_key_file]``(
+ const std::string & filename,
+ file_format format);
 
+ boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.use_rsa_private_key_file.overload2 use_rsa_private_key_file]``(
+ const std::string & filename,
+ file_format format,
+ boost::system::error_code & ec);
 
-Implements the FIONBIO IO control command.
 
+[section:overload1 ssl::basic_context::use_rsa_private_key_file (1 of 2 overloads)]
 
-[heading Example]
-
+Use an RSA private key from a file.
 
+ void use_rsa_private_key_file(
+ const std::string & filename,
+ file_format format);
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::non_blocking_io command(true);
- socket.io_control(command);
 
+This function is used to load an RSA private key into the context from a file.
 
 
+[heading Parameters]
+
 
+[variablelist
+
+[[filename][The name of the file containing the RSA private key.]]
 
+[[format][The file format (ASN.1 or PEM).]]
 
-[endsect]
+]
 
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
-[section:receive_buffer_size socket_base::receive_buffer_size]
+]
 
-Socket option for the receive buffer size of a socket.
 
- typedef implementation_defined receive_buffer_size;
 
+[endsect]
 
 
-Implements the SOL\_SOCKET/SO\_RCVBUF socket option.
 
+[section:overload2 ssl::basic_context::use_rsa_private_key_file (2 of 2 overloads)]
 
-[heading Examples]
-
-Setting the option:
+Use an RSA private key from a file.
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::receive_buffer_size option(8192);
- socket.set_option(option);
+ boost::system::error_code use_rsa_private_key_file(
+ const std::string & filename,
+ file_format format,
+ boost::system::error_code & ec);
 
 
+This function is used to load an RSA private key into the context from a file.
 
 
-Getting the current option value:
+[heading Parameters]
+
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::receive_buffer_size option;
- socket.get_option(option);
- int size = option.value();
+[variablelist
+
+[[filename][The name of the file containing the RSA private key.]]
 
+[[format][The file format (ASN.1 or PEM).]]
 
+[[ec][Set to indicate what error occurred, if any. ]]
 
+]
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:receive_low_watermark socket_base::receive_low_watermark]
+[section:use_tmp_dh_file ssl::basic_context::use_tmp_dh_file]
 
-Socket option for the receive low watermark.
+Use the specified file to obtain the temporary Diffie-Hellman parameters.
 
- typedef implementation_defined receive_low_watermark;
+ void ``[link boost_asio.reference.ssl__basic_context.use_tmp_dh_file.overload1 use_tmp_dh_file]``(
+ const std::string & filename);
 
+ boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.use_tmp_dh_file.overload2 use_tmp_dh_file]``(
+ const std::string & filename,
+ boost::system::error_code & ec);
 
 
-Implements the SOL\_SOCKET/SO\_RCVLOWAT socket option.
+[section:overload1 ssl::basic_context::use_tmp_dh_file (1 of 2 overloads)]
 
+Use the specified file to obtain the temporary Diffie-Hellman parameters.
 
-[heading Examples]
-
-Setting the option:
+ void use_tmp_dh_file(
+ const std::string & filename);
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::receive_low_watermark option(1024);
- socket.set_option(option);
 
+This function is used to load Diffie-Hellman parameters into the context from a file.
 
 
+[heading Parameters]
+
 
-Getting the current option value:
+[variablelist
+
+[[filename][The name of the file containing the Diffie-Hellman parameters. The file must use the PEM format.]]
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::receive_low_watermark option;
- socket.get_option(option);
- int size = option.value();
+]
 
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
+]
 
 
 
@@ -33620,151 +41474,118 @@
 
 
 
-[section:reuse_address socket_base::reuse_address]
+[section:overload2 ssl::basic_context::use_tmp_dh_file (2 of 2 overloads)]
 
-Socket option to allow the socket to be bound to an address that is already in use.
+Use the specified file to obtain the temporary Diffie-Hellman parameters.
 
- typedef implementation_defined reuse_address;
+ boost::system::error_code use_tmp_dh_file(
+ const std::string & filename,
+ boost::system::error_code & ec);
 
 
+This function is used to load Diffie-Hellman parameters into the context from a file.
 
-Implements the SOL\_SOCKET/SO\_REUSEADDR socket option.
 
+[heading Parameters]
+
 
-[heading Examples]
+[variablelist
   
-Setting the option:
-
- boost::asio::ip::tcp::acceptor acceptor(io_service);
- ...
- boost::asio::socket_base::reuse_address option(true);
- acceptor.set_option(option);
-
-
-
-
-Getting the current option value:
+[[filename][The name of the file containing the Diffie-Hellman parameters. The file must use the PEM format.]]
 
- boost::asio::ip::tcp::acceptor acceptor(io_service);
- ...
- boost::asio::socket_base::reuse_address option;
- acceptor.get_option(option);
- bool is_set = option.value();
+[[ec][Set to indicate what error occurred, if any. ]]
 
+]
 
 
 
+[endsect]
 
 
 [endsect]
 
 
+[section:verify_client_once ssl::basic_context::verify_client_once]
 
-[section:send_buffer_size socket_base::send_buffer_size]
 
-Socket option for the send buffer size of a socket.
+['Inherited from ssl::context_base.]
 
- typedef implementation_defined send_buffer_size;
+Do not request client certificate on renegotiation. Ignored unless verify_peer is set.
 
+ static const int verify_client_once = implementation_defined;
 
 
-Implements the SOL\_SOCKET/SO\_SNDBUF socket option.
 
+[endsect]
 
-[heading Examples]
-
-Setting the option:
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::send_buffer_size option(8192);
- socket.set_option(option);
 
+[section:verify_fail_if_no_peer_cert ssl::basic_context::verify_fail_if_no_peer_cert]
 
 
+['Inherited from ssl::context_base.]
 
-Getting the current option value:
+Fail verification if the peer has no certificate. Ignored unless verify_peer is set.
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::send_buffer_size option;
- socket.get_option(option);
- int size = option.value();
+ static const int verify_fail_if_no_peer_cert = implementation_defined;
 
 
 
+[endsect]
 
 
 
-[endsect]
+[section:verify_mode ssl::basic_context::verify_mode]
 
 
+['Inherited from ssl::context_base.]
 
-[section:send_low_watermark socket_base::send_low_watermark]
+Bitmask type for peer verification.
 
-Socket option for the send low watermark.
+ typedef int verify_mode;
 
- typedef implementation_defined send_low_watermark;
 
 
 
-Implements the SOL\_SOCKET/SO\_SNDLOWAT socket option.
+[endsect]
 
 
-[heading Examples]
-
-Setting the option:
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::send_low_watermark option(1024);
- socket.set_option(option);
+[section:verify_none ssl::basic_context::verify_none]
 
 
+['Inherited from ssl::context_base.]
 
+No verification.
 
-Getting the current option value:
+ static const int verify_none = implementation_defined;
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::send_low_watermark option;
- socket.get_option(option);
- int size = option.value();
 
 
+[endsect]
 
 
 
+[section:verify_peer ssl::basic_context::verify_peer]
 
-[endsect]
 
+['Inherited from ssl::context_base.]
 
+Verify the peer.
 
-[section:shutdown_type socket_base::shutdown_type]
+ static const int verify_peer = implementation_defined;
 
-Different ways a socket may be shutdown.
 
- enum shutdown_type
 
-[heading Values]
-[variablelist
+[endsect]
 
- [
- [shutdown_receive]
- [Shutdown the receive side of the socket. ]
- ]
 
- [
- [shutdown_send]
- [Shutdown the send side of the socket. ]
- ]
 
- [
- [shutdown_both]
- [Shutdown both send and receive on the socket. ]
- ]
+[section:_basic_context ssl::basic_context::~basic_context]
 
-]
+Destructor.
+
+ ~basic_context();
 
 
 
@@ -33774,14 +41595,12 @@
 
 [endsect]
 
-[section:ssl__basic_context ssl::basic_context]
 
-SSL context.
+[section:ssl__context ssl::context]
 
- template<
- typename ``[link boost_asio.reference.Service Service]``>
- class basic_context :
- public ssl::context_base
+Typedef for the typical usage of context.
+
+ typedef basic_context< context_service > context;
 
 
 [heading Types]
@@ -33961,73 +41780,152 @@
 
 ]
 
-[section:add_verify_path ssl::basic_context::add_verify_path]
 
-Add a directory containing certificate authority files to be used for performing verification.
 
- void ``[link boost_asio.reference.ssl__basic_context.add_verify_path.overload1 add_verify_path]``(
- const std::string & path);
+[endsect]
 
- boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.add_verify_path.overload2 add_verify_path]``(
- const std::string & path,
- boost::system::error_code & ec);
 
+[section:ssl__context_base ssl::context_base]
 
-[section:overload1 ssl::basic_context::add_verify_path (1 of 2 overloads)]
+The context_base class is used as a base for the basic_context class template so that we have a common place to define various enums.
 
-Add a directory containing certificate authority files to be used for performing verification.
+ class context_base
 
- void add_verify_path(
- const std::string & path);
 
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
 
-This function is used to specify the name of a directory containing certification authority certificates. Each file in the directory must contain a single certificate. The files must be named using the subject name's hash and an extension of ".0".
+ [[link boost_asio.reference.ssl__context_base.file_format [*file_format]]]
+ [File format types. ]
+
+ ]
 
+ [
 
-[heading Parameters]
-
+ [[link boost_asio.reference.ssl__context_base.method [*method]]]
+ [Different methods supported by a context. ]
+
+ ]
 
-[variablelist
+ [
+
+ [[link boost_asio.reference.ssl__context_base.options [*options]]]
+ [Bitmask type for SSL options. ]
   
-[[path][The name of a directory containing the certificates.]]
+ ]
+
+ [
+
+ [[link boost_asio.reference.ssl__context_base.password_purpose [*password_purpose]]]
+ [Purpose of PEM password. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.ssl__context_base.verify_mode [*verify_mode]]]
+ [Bitmask type for peer verification. ]
+
+ ]
 
 ]
 
-[heading Exceptions]
-
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
 
-[variablelist
+ [
+ [[link boost_asio.reference.ssl__context_base._context_base [*~context_base]]]
+ [Protected destructor to prevent deletion through this type. ]
+ ]
   
-[[boost::system::system_error][Thrown on failure. ]]
+]
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ssl__context_base.default_workarounds [*default_workarounds]]]
+ [Implement various bug workarounds. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_base.no_sslv2 [*no_sslv2]]]
+ [Disable SSL v2. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_base.no_sslv3 [*no_sslv3]]]
+ [Disable SSL v3. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_base.no_tlsv1 [*no_tlsv1]]]
+ [Disable TLS v1. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_base.single_dh_use [*single_dh_use]]]
+ [Always create a new key when using tmp_dh parameters. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_base.verify_client_once [*verify_client_once]]]
+ [Do not request client certificate on renegotiation. Ignored unless verify_peer is set. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_base.verify_fail_if_no_peer_cert [*verify_fail_if_no_peer_cert]]]
+ [Fail verification if the peer has no certificate. Ignored unless verify_peer is set. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_base.verify_none [*verify_none]]]
+ [No verification. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_base.verify_peer [*verify_peer]]]
+ [Verify the peer. ]
+ ]
 
 ]
 
 
+[section:default_workarounds ssl::context_base::default_workarounds]
 
-[endsect]
+Implement various bug workarounds.
 
+ static const int default_workarounds = implementation_defined;
 
 
-[section:overload2 ssl::basic_context::add_verify_path (2 of 2 overloads)]
 
-Add a directory containing certificate authority files to be used for performing verification.
+[endsect]
 
- boost::system::error_code add_verify_path(
- const std::string & path,
- boost::system::error_code & ec);
 
 
-This function is used to specify the name of a directory containing certification authority certificates. Each file in the directory must contain a single certificate. The files must be named using the subject name's hash and an extension of ".0".
+[section:file_format ssl::context_base::file_format]
 
+File format types.
 
-[heading Parameters]
-
+ enum file_format
 
+[heading Values]
 [variablelist
-
-[[path][The name of a directory containing the certificates.]]
 
-[[ec][Set to indicate what error occurred, if any. ]]
+ [
+ [asn1]
+ [ASN.1 file. ]
+ ]
+
+ [
+ [pem]
+ [PEM file. ]
+ ]
 
 ]
 
@@ -34036,16 +41934,89 @@
 [endsect]
 
 
+
+[section:method ssl::context_base::method]
+
+Different methods supported by a context.
+
+ enum method
+
+[heading Values]
+[variablelist
+
+ [
+ [sslv2]
+ [Generic SSL version 2. ]
+ ]
+
+ [
+ [sslv2_client]
+ [SSL version 2 client. ]
+ ]
+
+ [
+ [sslv2_server]
+ [SSL version 2 server. ]
+ ]
+
+ [
+ [sslv3]
+ [Generic SSL version 3. ]
+ ]
+
+ [
+ [sslv3_client]
+ [SSL version 3 client. ]
+ ]
+
+ [
+ [sslv3_server]
+ [SSL version 3 server. ]
+ ]
+
+ [
+ [tlsv1]
+ [Generic TLS version 1. ]
+ ]
+
+ [
+ [tlsv1_client]
+ [TLS version 1 client. ]
+ ]
+
+ [
+ [tlsv1_server]
+ [TLS version 1 server. ]
+ ]
+
+ [
+ [sslv23]
+ [Generic SSL/TLS. ]
+ ]
+
+ [
+ [sslv23_client]
+ [SSL/TLS client. ]
+ ]
+
+ [
+ [sslv23_server]
+ [SSL/TLS server. ]
+ ]
+
+]
+
+
+
 [endsect]
 
 
-[section:basic_context ssl::basic_context::basic_context]
 
-Constructor.
+[section:no_sslv2 ssl::context_base::no_sslv2]
 
- basic_context(
- boost::asio::io_service & io_service,
- method m);
+Disable SSL v2.
+
+ static const int no_sslv2 = implementation_defined;
 
 
 
@@ -34053,14 +42024,23 @@
 
 
 
-[section:default_workarounds ssl::basic_context::default_workarounds]
+[section:no_sslv3 ssl::context_base::no_sslv3]
 
+Disable SSL v3.
 
-['Inherited from ssl::context_base.]
+ static const int no_sslv3 = implementation_defined;
 
-Implement various bug workarounds.
 
- static const int default_workarounds = implementation_defined;
+
+[endsect]
+
+
+
+[section:no_tlsv1 ssl::context_base::no_tlsv1]
+
+Disable TLS v1.
+
+ static const int no_tlsv1 = implementation_defined;
 
 
 
@@ -34068,26 +42048,36 @@
 
 
 
-[section:file_format ssl::basic_context::file_format]
+[section:options ssl::context_base::options]
 
+Bitmask type for SSL options.
 
-['Inherited from ssl::context_base.]
+ typedef int options;
 
-File format types.
 
- enum file_format
+
+
+[endsect]
+
+
+
+[section:password_purpose ssl::context_base::password_purpose]
+
+Purpose of PEM password.
+
+ enum password_purpose
 
 [heading Values]
 [variablelist
 
   [
- [asn1]
- [ASN.1 file. ]
+ [for_reading]
+ [The password is needed for reading/decryption. ]
   ]
 
   [
- [pem]
- [PEM file. ]
+ [for_writing]
+ [The password is needed for writing/encryption. ]
   ]
 
 ]
@@ -34098,72 +42088,60 @@
 
 
 
-[section:impl ssl::basic_context::impl]
-
-Get the underlying implementation in the native type.
+[section:single_dh_use ssl::context_base::single_dh_use]
 
- impl_type impl();
+Always create a new key when using tmp_dh parameters.
 
+ static const int single_dh_use = implementation_defined;
 
-This function may be used to obtain the underlying implementation of the context. This is intended to allow access to context functionality that is not otherwise provided.
 
 
 [endsect]
 
 
 
-[section:impl_type ssl::basic_context::impl_type]
-
-The native implementation type of the locking dispatcher.
+[section:verify_client_once ssl::context_base::verify_client_once]
 
- typedef service_type::impl_type impl_type;
+Do not request client certificate on renegotiation. Ignored unless verify_peer is set.
 
+ static const int verify_client_once = implementation_defined;
 
 
 
 [endsect]
 
 
-[section:load_verify_file ssl::basic_context::load_verify_file]
 
-Load a certification authority file for performing verification.
+[section:verify_fail_if_no_peer_cert ssl::context_base::verify_fail_if_no_peer_cert]
 
- void ``[link boost_asio.reference.ssl__basic_context.load_verify_file.overload1 load_verify_file]``(
- const std::string & filename);
+Fail verification if the peer has no certificate. Ignored unless verify_peer is set.
 
- boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.load_verify_file.overload2 load_verify_file]``(
- const std::string & filename,
- boost::system::error_code & ec);
+ static const int verify_fail_if_no_peer_cert = implementation_defined;
 
 
-[section:overload1 ssl::basic_context::load_verify_file (1 of 2 overloads)]
 
-Load a certification authority file for performing verification.
+[endsect]
 
- void load_verify_file(
- const std::string & filename);
 
 
-This function is used to load one or more trusted certification authorities from a file.
+[section:verify_mode ssl::context_base::verify_mode]
 
+Bitmask type for peer verification.
 
-[heading Parameters]
-
+ typedef int verify_mode;
 
-[variablelist
-
-[[filename][The name of a file containing certification authority certificates in PEM format.]]
 
-]
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
+[endsect]
 
-]
+
+
+[section:verify_none ssl::context_base::verify_none]
+
+No verification.
+
+ static const int verify_none = implementation_defined;
 
 
 
@@ -34171,140 +42149,191 @@
 
 
 
-[section:overload2 ssl::basic_context::load_verify_file (2 of 2 overloads)]
+[section:verify_peer ssl::context_base::verify_peer]
 
-Load a certification authority file for performing verification.
+Verify the peer.
+
+ static const int verify_peer = implementation_defined;
 
- boost::system::error_code load_verify_file(
- const std::string & filename,
- boost::system::error_code & ec);
 
 
-This function is used to load the certificates for one or more trusted certification authorities from a file.
+[endsect]
 
 
-[heading Parameters]
-
 
-[variablelist
-
-[[filename][The name of a file containing certification authority certificates in PEM format.]]
+[section:_context_base ssl::context_base::~context_base]
 
-[[ec][Set to indicate what error occurred, if any. ]]
+Protected destructor to prevent deletion through this type.
 
-]
+ ~context_base();
 
 
 
 [endsect]
 
 
+
 [endsect]
 
+[section:ssl__context_service ssl::context_service]
 
-[section:method ssl::basic_context::method]
+Default service implementation for a context.
 
+ class context_service :
+ public io_service::service
 
-['Inherited from ssl::context_base.]
 
-Different methods supported by a context.
+[heading Types]
+[table
+ [[Name][Description]]
 
- enum method
+ [
 
-[heading Values]
-[variablelist
+ [[link boost_asio.reference.ssl__context_service.impl_type [*impl_type]]]
+ [The type of the context. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
   [
- [sslv2]
- [Generic SSL version 2. ]
+ [[link boost_asio.reference.ssl__context_service.add_verify_path [*add_verify_path]]]
+ [Add a directory containing certification authority files to be used for performing verification. ]
   ]
-
+
   [
- [sslv2_client]
- [SSL version 2 client. ]
+ [[link boost_asio.reference.ssl__context_service.context_service [*context_service]]]
+ [Constructor. ]
   ]
-
+
   [
- [sslv2_server]
- [SSL version 2 server. ]
+ [[link boost_asio.reference.ssl__context_service.create [*create]]]
+ [Create a new context implementation. ]
   ]
-
+
   [
- [sslv3]
- [Generic SSL version 3. ]
+ [[link boost_asio.reference.ssl__context_service.destroy [*destroy]]]
+ [Destroy a context implementation. ]
   ]
-
+
   [
- [sslv3_client]
- [SSL version 3 client. ]
+ [[link boost_asio.reference.ssl__context_service.get_io_service [*get_io_service]]]
+ [Get the io_service object that owns the service. ]
   ]
-
+
   [
- [sslv3_server]
- [SSL version 3 server. ]
+ [[link boost_asio.reference.ssl__context_service.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
   ]
-
+
   [
- [tlsv1]
- [Generic TLS version 1. ]
+ [[link boost_asio.reference.ssl__context_service.load_verify_file [*load_verify_file]]]
+ [Load a certification authority file for performing verification. ]
   ]
-
+
   [
- [tlsv1_client]
- [TLS version 1 client. ]
+ [[link boost_asio.reference.ssl__context_service.null [*null]]]
+ [Return a null context implementation. ]
   ]
-
+
   [
- [tlsv1_server]
- [TLS version 1 server. ]
+ [[link boost_asio.reference.ssl__context_service.set_options [*set_options]]]
+ [Set options on the context. ]
   ]
-
+
   [
- [sslv23]
- [Generic SSL/TLS. ]
+ [[link boost_asio.reference.ssl__context_service.set_password_callback [*set_password_callback]]]
+ [Set the password callback. ]
   ]
-
+
   [
- [sslv23_client]
- [SSL/TLS client. ]
+ [[link boost_asio.reference.ssl__context_service.set_verify_mode [*set_verify_mode]]]
+ [Set peer verification mode. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_service.shutdown_service [*shutdown_service]]]
+ [Destroy all user-defined handler objects owned by the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_service.use_certificate_chain_file [*use_certificate_chain_file]]]
+ [Use a certificate chain from a file. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_service.use_certificate_file [*use_certificate_file]]]
+ [Use a certificate from a file. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_service.use_private_key_file [*use_private_key_file]]]
+ [Use a private key from a file. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_service.use_rsa_private_key_file [*use_rsa_private_key_file]]]
+ [Use an RSA private key from a file. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_service.use_tmp_dh_file [*use_tmp_dh_file]]]
+ [Use the specified file to obtain the temporary Diffie-Hellman parameters. ]
   ]
+
+]
+
+[heading Data Members]
+[table
+ [[Name][Description]]
 
   [
- [sslv23_server]
- [SSL/TLS server. ]
+ [[link boost_asio.reference.ssl__context_service.id [*id]]]
+ [The unique service identifier. ]
   ]
 
 ]
 
 
+[section:add_verify_path ssl::context_service::add_verify_path]
 
-[endsect]
+Add a directory containing certification authority files to be used for performing verification.
 
+ boost::system::error_code add_verify_path(
+ impl_type & impl,
+ const std::string & path,
+ boost::system::error_code & ec);
 
 
-[section:no_sslv2 ssl::basic_context::no_sslv2]
 
+[endsect]
 
-['Inherited from ssl::context_base.]
 
-Disable SSL v2.
 
- static const int no_sslv2 = implementation_defined;
+[section:context_service ssl::context_service::context_service]
 
+Constructor.
 
+ context_service(
+ boost::asio::io_service & io_service);
 
-[endsect]
 
 
+[endsect]
 
-[section:no_sslv3 ssl::basic_context::no_sslv3]
 
 
-['Inherited from ssl::context_base.]
+[section:create ssl::context_service::create]
 
-Disable SSL v3.
+Create a new context implementation.
 
- static const int no_sslv3 = implementation_defined;
+ void create(
+ impl_type & impl,
+ context_base::method m);
 
 
 
@@ -34312,60 +42341,52 @@
 
 
 
-[section:no_tlsv1 ssl::basic_context::no_tlsv1]
+[section:destroy ssl::context_service::destroy]
 
+Destroy a context implementation.
 
-['Inherited from ssl::context_base.]
+ void destroy(
+ impl_type & impl);
 
-Disable TLS v1.
 
- static const int no_tlsv1 = implementation_defined;
 
+[endsect]
 
 
-[endsect]
 
+[section:get_io_service ssl::context_service::get_io_service]
 
 
-[section:options ssl::basic_context::options]
+['Inherited from io_service.]
 
+Get the io_service object that owns the service.
 
-['Inherited from ssl::context_base.]
+ boost::asio::io_service & get_io_service();
 
-Bitmask type for SSL options.
 
- typedef int options;
 
+[endsect]
 
 
 
-[endsect]
+[section:id ssl::context_service::id]
 
+The unique service identifier.
 
+ static boost::asio::io_service::id id;
 
-[section:password_purpose ssl::basic_context::password_purpose]
 
 
-['Inherited from ssl::context_base.]
+[endsect]
 
-Purpose of PEM password.
 
- enum password_purpose
 
-[heading Values]
-[variablelist
+[section:impl_type ssl::context_service::impl_type]
 
- [
- [for_reading]
- [The password is needed for reading/decryption. ]
- ]
+The type of the context.
 
- [
- [for_writing]
- [The password is needed for writing/encryption. ]
- ]
+ typedef implementation_defined impl_type;
 
-]
 
 
 
@@ -34373,58 +42394,56 @@
 
 
 
-[section:service_type ssl::basic_context::service_type]
+[section:io_service ssl::context_service::io_service]
 
-The type of the service that will be used to provide context operations.
 
- typedef Service service_type;
+['Inherited from io_service.]
+
+(Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
+ boost::asio::io_service & io_service();
 
 
 
 [endsect]
 
 
-[section:set_options ssl::basic_context::set_options]
 
-Set options on the context.
+[section:load_verify_file ssl::context_service::load_verify_file]
 
- void ``[link boost_asio.reference.ssl__basic_context.set_options.overload1 set_options]``(
- options o);
+Load a certification authority file for performing verification.
 
- boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.set_options.overload2 set_options]``(
- options o,
+ boost::system::error_code load_verify_file(
+ impl_type & impl,
+ const std::string & filename,
       boost::system::error_code & ec);
 
 
-[section:overload1 ssl::basic_context::set_options (1 of 2 overloads)]
 
-Set options on the context.
+[endsect]
 
- void set_options(
- options o);
 
 
-This function may be used to configure the SSL options used by the context.
+[section:null ssl::context_service::null]
 
+Return a null context implementation.
 
-[heading Parameters]
-
+ impl_type null() const;
 
-[variablelist
-
-[[o][A bitmask of options. The available option values are defined in the context\_base class. The options are bitwise-ored with any existing value for the options.]]
 
-]
 
-[heading Exceptions]
-
+[endsect]
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
 
-]
+
+[section:set_options ssl::context_service::set_options]
+
+Set options on the context.
+
+ boost::system::error_code set_options(
+ impl_type & impl,
+ context_base::options o,
+ boost::system::error_code & ec);
 
 
 
@@ -34432,90 +42451,90 @@
 
 
 
-[section:overload2 ssl::basic_context::set_options (2 of 2 overloads)]
+[section:set_password_callback ssl::context_service::set_password_callback]
 
-Set options on the context.
+Set the password callback.
 
- boost::system::error_code set_options(
- options o,
+ template<
+ typename PasswordCallback>
+ boost::system::error_code set_password_callback(
+ impl_type & impl,
+ PasswordCallback callback,
       boost::system::error_code & ec);
 
 
-This function may be used to configure the SSL options used by the context.
 
+[endsect]
 
-[heading Parameters]
-
 
-[variablelist
-
-[[o][A bitmask of options. The available option values are defined in the context\_base class. The options are bitwise-ored with any existing value for the options.]]
 
-[[ec][Set to indicate what error occurred, if any. ]]
+[section:set_verify_mode ssl::context_service::set_verify_mode]
 
-]
+Set peer verification mode.
+
+ boost::system::error_code set_verify_mode(
+ impl_type & impl,
+ context_base::verify_mode v,
+ boost::system::error_code & ec);
 
 
 
 [endsect]
 
 
+
+[section:shutdown_service ssl::context_service::shutdown_service]
+
+Destroy all user-defined handler objects owned by the service.
+
+ void shutdown_service();
+
+
+
 [endsect]
 
-[section:set_password_callback ssl::basic_context::set_password_callback]
 
-Set the password callback.
 
- template<
- typename PasswordCallback>
- void ``[link boost_asio.reference.ssl__basic_context.set_password_callback.overload1 set_password_callback]``(
- PasswordCallback callback);
+[section:use_certificate_chain_file ssl::context_service::use_certificate_chain_file]
 
- template<
- typename PasswordCallback>
- boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.set_password_callback.overload2 set_password_callback]``(
- PasswordCallback callback,
+Use a certificate chain from a file.
+
+ boost::system::error_code use_certificate_chain_file(
+ impl_type & impl,
+ const std::string & filename,
       boost::system::error_code & ec);
 
 
-[section:overload1 ssl::basic_context::set_password_callback (1 of 2 overloads)]
 
-Set the password callback.
+[endsect]
 
- template<
- typename PasswordCallback>
- void set_password_callback(
- PasswordCallback callback);
 
 
-This function is used to specify a callback function to obtain password information about an encrypted key in PEM format.
+[section:use_certificate_file ssl::context_service::use_certificate_file]
 
+Use a certificate from a file.
 
-[heading Parameters]
-
+ boost::system::error_code use_certificate_file(
+ impl_type & impl,
+ const std::string & filename,
+ context_base::file_format format,
+ boost::system::error_code & ec);
 
-[variablelist
-
-[[callback][The function object to be used for obtaining the password. The function signature of the handler must be:
-``
- std::string password_callback(
- std::size_t max_length, // The maximum size for a password.
- password_purpose purpose // Whether password is for reading or writing.
- );
 
-``
-The return value of the callback is a string containing the password.]]
 
-]
+[endsect]
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
 
-]
+[section:use_private_key_file ssl::context_service::use_private_key_file]
+
+Use a private key from a file.
+
+ boost::system::error_code use_private_key_file(
+ impl_type & impl,
+ const std::string & filename,
+ context_base::file_format format,
+ boost::system::error_code & ec);
 
 
 
@@ -34523,103 +42542,216 @@
 
 
 
-[section:overload2 ssl::basic_context::set_password_callback (2 of 2 overloads)]
+[section:use_rsa_private_key_file ssl::context_service::use_rsa_private_key_file]
 
-Set the password callback.
+Use an RSA private key from a file.
 
- template<
- typename PasswordCallback>
- boost::system::error_code set_password_callback(
- PasswordCallback callback,
+ boost::system::error_code use_rsa_private_key_file(
+ impl_type & impl,
+ const std::string & filename,
+ context_base::file_format format,
       boost::system::error_code & ec);
 
 
-This function is used to specify a callback function to obtain password information about an encrypted key in PEM format.
 
+[endsect]
 
-[heading Parameters]
-
 
-[variablelist
-
-[[callback][The function object to be used for obtaining the password. The function signature of the handler must be:
-``
- std::string password_callback(
- std::size_t max_length, // The maximum size for a password.
- password_purpose purpose // Whether password is for reading or writing.
- );
 
-``
-The return value of the callback is a string containing the password.]]
+[section:use_tmp_dh_file ssl::context_service::use_tmp_dh_file]
 
-[[ec][Set to indicate what error occurred, if any. ]]
+Use the specified file to obtain the temporary Diffie-Hellman parameters.
 
-]
+ boost::system::error_code use_tmp_dh_file(
+ impl_type & impl,
+ const std::string & filename,
+ boost::system::error_code & ec);
 
 
 
 [endsect]
 
 
+
 [endsect]
 
-[section:set_verify_mode ssl::basic_context::set_verify_mode]
+[section:ssl__stream ssl::stream]
 
-Set the peer verification mode.
+Provides stream-oriented functionality using SSL.
 
- void ``[link boost_asio.reference.ssl__basic_context.set_verify_mode.overload1 set_verify_mode]``(
- verify_mode v);
+ template<
+ typename Stream,
+ typename ``[link boost_asio.reference.Service Service]`` = stream_service>
+ class stream :
+ public ssl::stream_base
 
- boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.set_verify_mode.overload2 set_verify_mode]``(
- verify_mode v,
- boost::system::error_code & ec);
 
+[heading Types]
+[table
+ [[Name][Description]]
 
-[section:overload1 ssl::basic_context::set_verify_mode (1 of 2 overloads)]
+ [
 
-Set the peer verification mode.
+ [[link boost_asio.reference.ssl__stream.handshake_type [*handshake_type]]]
+ [Different handshake types. ]
+
+ ]
 
- void set_verify_mode(
- verify_mode v);
+ [
 
+ [[link boost_asio.reference.ssl__stream.impl_type [*impl_type]]]
+ [The native implementation type of the stream. ]
+
+ ]
 
-This function may be used to configure the peer verification mode used by the context.
+ [
+
+ [[link boost_asio.reference.ssl__stream.lowest_layer_type [*lowest_layer_type]]]
+ [The type of the lowest layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.ssl__stream.next_layer_type [*next_layer_type]]]
+ [The type of the next layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.ssl__stream.service_type [*service_type]]]
+ [The type of the service that will be used to provide stream operations. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ssl__stream.async_handshake [*async_handshake]]]
+ [Start an asynchronous SSL handshake. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__stream.async_read_some [*async_read_some]]]
+ [Start an asynchronous read. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__stream.async_shutdown [*async_shutdown]]]
+ [Asynchronously shut down SSL on the stream. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__stream.async_write_some [*async_write_some]]]
+ [Start an asynchronous write. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__stream.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__stream.handshake [*handshake]]]
+ [Perform SSL handshaking. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__stream.impl [*impl]]]
+ [Get the underlying implementation in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__stream.in_avail [*in_avail]]]
+ [Determine the amount of data that may be read without blocking. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__stream.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__stream.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__stream.next_layer [*next_layer]]]
+ [Get a reference to the next layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__stream.peek [*peek]]]
+ [Peek at the incoming data on the stream. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__stream.read_some [*read_some]]]
+ [Read some data from the stream. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__stream.shutdown [*shutdown]]]
+ [Shut down SSL on the stream. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__stream.stream [*stream]]]
+ [Construct a stream. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__stream.write_some [*write_some]]]
+ [Write some data to the stream. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__stream._stream [*~stream]]]
+ [Destructor. ]
+ ]
+
+]
 
+The stream class template provides asynchronous and blocking stream-oriented functionality using SSL.
 
-[heading Parameters]
-
 
-[variablelist
+[heading Thread Safety]
   
-[[v][A bitmask of peer verification modes. The available verify\_mode values are defined in the context\_base class.]]
-
-]
+[*Distinct] [*objects:] Safe.
 
-[heading Exceptions]
-
+[*Shared] [*objects:] Unsafe.
 
-[variablelist
+[heading Example]
   
-[[boost::system::system_error][Thrown on failure. ]]
+To use the SSL stream template with an ip::tcp::socket, you would write:
 
-]
+ boost::asio::io_service io_service;
+ boost::asio::ssl::context context(io_service, boost::asio::ssl::context::sslv23);
+ boost::asio::ssl::stream<boost::asio::ip::tcp::socket> sock(io_service, context);
 
 
 
-[endsect]
 
 
 
-[section:overload2 ssl::basic_context::set_verify_mode (2 of 2 overloads)]
+[section:async_handshake ssl::stream::async_handshake]
 
-Set the peer verification mode.
+Start an asynchronous SSL handshake.
 
- boost::system::error_code set_verify_mode(
- verify_mode v,
- boost::system::error_code & ec);
+ template<
+ typename HandshakeHandler>
+ void async_handshake(
+ handshake_type type,
+ HandshakeHandler handler);
 
 
-This function may be used to configure the peer verification mode used by the context.
+This function is used to asynchronously perform an SSL handshake on the stream. This function call always returns immediately.
 
 
 [heading Parameters]
@@ -34627,55 +42759,38 @@
 
 [variablelist
   
-[[v][A bitmask of peer verification modes. The available verify\_mode values are defined in the context\_base class.]]
-
-[[ec][Set to indicate what error occurred, if any. ]]
-
-]
-
-
-
-[endsect]
-
-
-[endsect]
-
-
-[section:single_dh_use ssl::basic_context::single_dh_use]
-
+[[type][The type of handshaking to be performed, i.e. as a client or as a server.]]
 
-['Inherited from ssl::context_base.]
+[[handler][The handler to be called when the handshake operation completes. Copies will be made of the handler as required. The equivalent function signature of the handler must be:
+``
+ void handler(
+ const boost::system::error_code& error // Result of operation.
+ );
 
-Always create a new key when using tmp_dh parameters.
+``
+]]
 
- static const int single_dh_use = implementation_defined;
+]
 
 
 
 [endsect]
 
 
-[section:use_certificate_chain_file ssl::basic_context::use_certificate_chain_file]
-
-Use a certificate chain from a file.
-
- void ``[link boost_asio.reference.ssl__basic_context.use_certificate_chain_file.overload1 use_certificate_chain_file]``(
- const std::string & filename);
-
- boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.use_certificate_chain_file.overload2 use_certificate_chain_file]``(
- const std::string & filename,
- boost::system::error_code & ec);
-
 
-[section:overload1 ssl::basic_context::use_certificate_chain_file (1 of 2 overloads)]
+[section:async_read_some ssl::stream::async_read_some]
 
-Use a certificate chain from a file.
+Start an asynchronous read.
 
- void use_certificate_chain_file(
- const std::string & filename);
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_read_some(
+ const MutableBufferSequence & buffers,
+ ReadHandler handler);
 
 
-This function is used to load a certificate chain into the context from a file.
+This function is used to asynchronously read one or more bytes of data from the stream. The function call always returns immediately.
 
 
 [heading Parameters]
@@ -34683,35 +42798,42 @@
 
 [variablelist
   
-[[filename][The name of the file containing the certificate. The file must use the PEM format.]]
-
-]
+[[buffers][The buffers into which the data will be read. Although the buffers object may be copied as necessary, ownership of the underlying buffers is retained by the caller, which must guarantee that they remain valid until the handler is called.]]
 
-[heading Exceptions]
-
+[[handler][The handler to be called when the read operation completes. Copies will be made of the handler as required. The equivalent function signature of the handler must be:
+``
+ void handler(
+ const boost::system::error_code& error, // Result of operation.
+ std::size_t bytes_transferred // Number of bytes read.
+ );
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
+``
+]]
 
 ]
 
+[heading Remarks]
+
+The async\_read\_some operation may not read all of the requested number of bytes. Consider using the
+[link boost_asio.reference.async_read async_read] function if you need to ensure that the requested amount of data is read before the asynchronous operation completes.
+
 
 
 [endsect]
 
 
 
-[section:overload2 ssl::basic_context::use_certificate_chain_file (2 of 2 overloads)]
+[section:async_shutdown ssl::stream::async_shutdown]
 
-Use a certificate chain from a file.
+Asynchronously shut down SSL on the stream.
 
- boost::system::error_code use_certificate_chain_file(
- const std::string & filename,
- boost::system::error_code & ec);
+ template<
+ typename ShutdownHandler>
+ void async_shutdown(
+ ShutdownHandler handler);
 
 
-This function is used to load a certificate chain into the context from a file.
+This function is used to asynchronously shut down SSL on the stream. This function call always returns immediately.
 
 
 [heading Parameters]
@@ -34719,9 +42841,14 @@
 
 [variablelist
   
-[[filename][The name of the file containing the certificate. The file must use the PEM format.]]
+[[handler][The handler to be called when the handshake operation completes. Copies will be made of the handler as required. The equivalent function signature of the handler must be:
+``
+ void handler(
+ const boost::system::error_code& error // Result of operation.
+ );
 
-[[ec][Set to indicate what error occurred, if any. ]]
+``
+]]
 
 ]
 
@@ -34730,32 +42857,20 @@
 [endsect]
 
 
-[endsect]
-
-[section:use_certificate_file ssl::basic_context::use_certificate_file]
-
-Use a certificate from a file.
-
- void ``[link boost_asio.reference.ssl__basic_context.use_certificate_file.overload1 use_certificate_file]``(
- const std::string & filename,
- file_format format);
-
- boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.use_certificate_file.overload2 use_certificate_file]``(
- const std::string & filename,
- file_format format,
- boost::system::error_code & ec);
-
 
-[section:overload1 ssl::basic_context::use_certificate_file (1 of 2 overloads)]
+[section:async_write_some ssl::stream::async_write_some]
 
-Use a certificate from a file.
+Start an asynchronous write.
 
- void use_certificate_file(
- const std::string & filename,
- file_format format);
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_write_some(
+ const ConstBufferSequence & buffers,
+ WriteHandler handler);
 
 
-This function is used to load a certificate into the context from a file.
+This function is used to asynchronously write one or more bytes of data to the stream. The function call always returns immediately.
 
 
 [heading Parameters]
@@ -34763,84 +42878,71 @@
 
 [variablelist
   
-[[filename][The name of the file containing the certificate.]]
-
-[[format][The file format (ASN.1 or PEM).]]
-
-]
+[[buffers][The data to be written to the stream. Although the buffers object may be copied as necessary, ownership of the underlying buffers is retained by the caller, which must guarantee that they remain valid until the handler is called.]]
 
-[heading Exceptions]
-
+[[handler][The handler to be called when the write operation completes. Copies will be made of the handler as required. The equivalent function signature of the handler must be:
+``
+ void handler(
+ const boost::system::error_code& error, // Result of operation.
+ std::size_t bytes_transferred // Number of bytes written.
+ );
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
+``
+]]
 
 ]
 
+[heading Remarks]
+
+The async\_write\_some operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.async_write async_write] function if you need to ensure that all data is written before the blocking operation completes.
 
 
-[endsect]
-
-
-
-[section:overload2 ssl::basic_context::use_certificate_file (2 of 2 overloads)]
 
-Use a certificate from a file.
+[endsect]
 
- boost::system::error_code use_certificate_file(
- const std::string & filename,
- file_format format,
- boost::system::error_code & ec);
 
 
-This function is used to load a certificate into the context from a file.
+[section:get_io_service ssl::stream::get_io_service]
 
+Get the io_service associated with the object.
 
-[heading Parameters]
-
+ boost::asio::io_service & get_io_service();
 
-[variablelist
-
-[[filename][The name of the file containing the certificate.]]
 
-[[format][The file format (ASN.1 or PEM).]]
+This function may be used to obtain the io_service object that the stream uses to dispatch handlers for asynchronous operations.
 
-[[ec][Set to indicate what error occurred, if any. ]]
 
-]
+[heading Return Value]
+
+A reference to the io_service object that stream will use to dispatch handlers. Ownership is not transferred to the caller.
 
 
 
 [endsect]
 
 
-[endsect]
-
-[section:use_private_key_file ssl::basic_context::use_private_key_file]
+[section:handshake ssl::stream::handshake]
 
-Use a private key from a file.
+Perform SSL handshaking.
 
- void ``[link boost_asio.reference.ssl__basic_context.use_private_key_file.overload1 use_private_key_file]``(
- const std::string & filename,
- file_format format);
+ void ``[link boost_asio.reference.ssl__stream.handshake.overload1 handshake]``(
+ handshake_type type);
 
- boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.use_private_key_file.overload2 use_private_key_file]``(
- const std::string & filename,
- file_format format,
+ boost::system::error_code ``[link boost_asio.reference.ssl__stream.handshake.overload2 handshake]``(
+ handshake_type type,
       boost::system::error_code & ec);
 
 
-[section:overload1 ssl::basic_context::use_private_key_file (1 of 2 overloads)]
+[section:overload1 ssl::stream::handshake (1 of 2 overloads)]
 
-Use a private key from a file.
+Perform SSL handshaking.
 
- void use_private_key_file(
- const std::string & filename,
- file_format format);
+ void handshake(
+ handshake_type type);
 
 
-This function is used to load a private key into the context from a file.
+This function is used to perform SSL handshaking on the stream. The function call will block until handshaking is complete or an error occurs.
 
 
 [heading Parameters]
@@ -34848,9 +42950,7 @@
 
 [variablelist
   
-[[filename][The name of the file containing the private key.]]
-
-[[format][The file format (ASN.1 or PEM).]]
+[[type][The type of handshaking to be performed, i.e. as a client or as a server.]]
 
 ]
 
@@ -34869,17 +42969,16 @@
 
 
 
-[section:overload2 ssl::basic_context::use_private_key_file (2 of 2 overloads)]
+[section:overload2 ssl::stream::handshake (2 of 2 overloads)]
 
-Use a private key from a file.
+Perform SSL handshaking.
 
- boost::system::error_code use_private_key_file(
- const std::string & filename,
- file_format format,
+ boost::system::error_code handshake(
+ handshake_type type,
       boost::system::error_code & ec);
 
 
-This function is used to load a private key into the context from a file.
+This function is used to perform SSL handshaking on the stream. The function call will block until handshaking is complete or an error occurs.
 
 
 [heading Parameters]
@@ -34887,9 +42986,7 @@
 
 [variablelist
   
-[[filename][The name of the file containing the private key.]]
-
-[[format][The file format (ASN.1 or PEM).]]
+[[type][The type of handshaking to be performed, i.e. as a client or as a server.]]
 
 [[ec][Set to indicate what error occurred, if any. ]]
 
@@ -34902,49 +42999,25 @@
 
 [endsect]
 
-[section:use_rsa_private_key_file ssl::basic_context::use_rsa_private_key_file]
-
-Use an RSA private key from a file.
-
- void ``[link boost_asio.reference.ssl__basic_context.use_rsa_private_key_file.overload1 use_rsa_private_key_file]``(
- const std::string & filename,
- file_format format);
-
- boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.use_rsa_private_key_file.overload2 use_rsa_private_key_file]``(
- const std::string & filename,
- file_format format,
- boost::system::error_code & ec);
-
-
-[section:overload1 ssl::basic_context::use_rsa_private_key_file (1 of 2 overloads)]
-
-Use an RSA private key from a file.
-
- void use_rsa_private_key_file(
- const std::string & filename,
- file_format format);
-
 
-This function is used to load an RSA private key into the context from a file.
+[section:handshake_type ssl::stream::handshake_type]
 
+Different handshake types.
 
-[heading Parameters]
-
+ enum handshake_type
 
+[heading Values]
 [variablelist
-
-[[filename][The name of the file containing the RSA private key.]]
-
-[[format][The file format (ASN.1 or PEM).]]
-
-]
 
-[heading Exceptions]
-
+ [
+ [client]
+ [Perform handshaking as a client. ]
+ ]
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
+ [
+ [server]
+ [Perform handshaking as a server. ]
+ ]
 
 ]
 
@@ -34954,70 +43027,55 @@
 
 
 
-[section:overload2 ssl::basic_context::use_rsa_private_key_file (2 of 2 overloads)]
+[section:impl ssl::stream::impl]
 
-Use an RSA private key from a file.
+Get the underlying implementation in the native type.
 
- boost::system::error_code use_rsa_private_key_file(
- const std::string & filename,
- file_format format,
- boost::system::error_code & ec);
+ impl_type impl();
 
 
-This function is used to load an RSA private key into the context from a file.
+This function may be used to obtain the underlying implementation of the context. This is intended to allow access to stream functionality that is not otherwise provided.
 
 
-[heading Parameters]
-
+[endsect]
 
-[variablelist
-
-[[filename][The name of the file containing the RSA private key.]]
 
-[[format][The file format (ASN.1 or PEM).]]
 
-[[ec][Set to indicate what error occurred, if any. ]]
+[section:impl_type ssl::stream::impl_type]
 
-]
+The native implementation type of the stream.
 
+ typedef service_type::impl_type impl_type;
 
 
-[endsect]
 
 
 [endsect]
 
-[section:use_tmp_dh_file ssl::basic_context::use_tmp_dh_file]
-
-Use the specified file to obtain the temporary Diffie-Hellman parameters.
 
- void ``[link boost_asio.reference.ssl__basic_context.use_tmp_dh_file.overload1 use_tmp_dh_file]``(
- const std::string & filename);
+[section:in_avail ssl::stream::in_avail]
 
- boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.use_tmp_dh_file.overload2 use_tmp_dh_file]``(
- const std::string & filename,
- boost::system::error_code & ec);
+Determine the amount of data that may be read without blocking.
 
+ std::size_t ``[link boost_asio.reference.ssl__stream.in_avail.overload1 in_avail]``();
 
-[section:overload1 ssl::basic_context::use_tmp_dh_file (1 of 2 overloads)]
+ std::size_t ``[link boost_asio.reference.ssl__stream.in_avail.overload2 in_avail]``(
+ boost::system::error_code & ec);
 
-Use the specified file to obtain the temporary Diffie-Hellman parameters.
 
- void use_tmp_dh_file(
- const std::string & filename);
+[section:overload1 ssl::stream::in_avail (1 of 2 overloads)]
 
+Determine the amount of data that may be read without blocking.
 
-This function is used to load Diffie-Hellman parameters into the context from a file.
+ std::size_t in_avail();
 
 
-[heading Parameters]
-
+This function is used to determine the amount of data, in bytes, that may be read from the stream without blocking.
 
-[variablelist
-
-[[filename][The name of the file containing the Diffie-Hellman parameters. The file must use the PEM format.]]
 
-]
+[heading Return Value]
+
+The number of bytes of data that can be read without blocking.
 
 [heading Exceptions]
     
@@ -35034,16 +43092,15 @@
 
 
 
-[section:overload2 ssl::basic_context::use_tmp_dh_file (2 of 2 overloads)]
+[section:overload2 ssl::stream::in_avail (2 of 2 overloads)]
 
-Use the specified file to obtain the temporary Diffie-Hellman parameters.
+Determine the amount of data that may be read without blocking.
 
- boost::system::error_code use_tmp_dh_file(
- const std::string & filename,
+ std::size_t in_avail(
       boost::system::error_code & ec);
 
 
-This function is used to load Diffie-Hellman parameters into the context from a file.
+This function is used to determine the amount of data, in bytes, that may be read from the stream without blocking.
 
 
 [heading Parameters]
@@ -35051,43 +43108,35 @@
 
 [variablelist
   
-[[filename][The name of the file containing the Diffie-Hellman parameters. The file must use the PEM format.]]
-
-[[ec][Set to indicate what error occurred, if any. ]]
+[[ec][Set to indicate what error occurred, if any.]]
 
 ]
 
+[heading Return Value]
+
+The number of bytes of data that can be read without blocking.
 
 
-[endsect]
-
 
 [endsect]
 
 
-[section:verify_client_once ssl::basic_context::verify_client_once]
-
-
-['Inherited from ssl::context_base.]
-
-Do not request client certificate on renegotiation. Ignored unless verify_peer is set.
-
- static const int verify_client_once = implementation_defined;
-
-
-
 [endsect]
 
 
+[section:io_service ssl::stream::io_service]
 
-[section:verify_fail_if_no_peer_cert ssl::basic_context::verify_fail_if_no_peer_cert]
+(Deprecated: use get_io_service().) Get the io_service associated with the object.
 
+ boost::asio::io_service & io_service();
 
-['Inherited from ssl::context_base.]
 
-Fail verification if the peer has no certificate. Ignored unless verify_peer is set.
+This function may be used to obtain the io_service object that the stream uses to dispatch handlers for asynchronous operations.
 
- static const int verify_fail_if_no_peer_cert = implementation_defined;
+
+[heading Return Value]
+
+A reference to the io_service object that stream will use to dispatch handlers. Ownership is not transferred to the caller.
 
 
 
@@ -35095,30 +43144,32 @@
 
 
 
-[section:verify_mode ssl::basic_context::verify_mode]
+[section:lowest_layer ssl::stream::lowest_layer]
 
+Get a reference to the lowest layer.
 
-['Inherited from ssl::context_base.]
+ lowest_layer_type & lowest_layer();
 
-Bitmask type for peer verification.
 
- typedef int verify_mode;
+This function returns a reference to the lowest layer in a stack of stream layers.
 
 
+[heading Return Value]
+
+A reference to the lowest layer in the stack of stream layers. Ownership is not transferred to the caller.
+
 
 
 [endsect]
 
 
 
-[section:verify_none ssl::basic_context::verify_none]
-
+[section:lowest_layer_type ssl::stream::lowest_layer_type]
 
-['Inherited from ssl::context_base.]
+The type of the lowest layer.
 
-No verification.
+ typedef next_layer_type::lowest_layer_type lowest_layer_type;
 
- static const int verify_none = implementation_defined;
 
 
 
@@ -35126,432 +43177,299 @@
 
 
 
-[section:verify_peer ssl::basic_context::verify_peer]
+[section:next_layer ssl::stream::next_layer]
 
+Get a reference to the next layer.
 
-['Inherited from ssl::context_base.]
+ next_layer_type & next_layer();
 
-Verify the peer.
 
- static const int verify_peer = implementation_defined;
+This function returns a reference to the next layer in a stack of stream layers.
 
 
+[heading Return Value]
+
+A reference to the next layer in the stack of stream layers. Ownership is not transferred to the caller.
 
-[endsect]
 
 
+[endsect]
 
-[section:_basic_context ssl::basic_context::~basic_context]
 
-Destructor.
 
- ~basic_context();
+[section:next_layer_type ssl::stream::next_layer_type]
 
+The type of the next layer.
 
+ typedef boost::remove_reference< Stream >::type next_layer_type;
 
-[endsect]
 
 
 
 [endsect]
 
 
-[section:ssl__context ssl::context]
-
-Typedef for the typical usage of context.
-
- typedef basic_context< context_service > context;
+[section:peek ssl::stream::peek]
 
+Peek at the incoming data on the stream.
 
-[heading Types]
-[table
- [[Name][Description]]
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.ssl__stream.peek.overload1 peek]``(
+ const MutableBufferSequence & buffers);
 
- [
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.ssl__stream.peek.overload2 peek]``(
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
 
- [[link boost_asio.reference.ssl__basic_context.file_format [*file_format]]]
- [File format types. ]
-
- ]
 
- [
+[section:overload1 ssl::stream::peek (1 of 2 overloads)]
 
- [[link boost_asio.reference.ssl__basic_context.impl_type [*impl_type]]]
- [The native implementation type of the locking dispatcher. ]
-
- ]
+Peek at the incoming data on the stream.
 
- [
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t peek(
+ const MutableBufferSequence & buffers);
 
- [[link boost_asio.reference.ssl__basic_context.method [*method]]]
- [Different methods supported by a context. ]
-
- ]
 
- [
+This function is used to peek at the incoming data on the stream, without removing it from the input queue. The function call will block until data has been read successfully or an error occurs.
 
- [[link boost_asio.reference.ssl__basic_context.options [*options]]]
- [Bitmask type for SSL options. ]
-
- ]
 
- [
+[heading Parameters]
+
 
- [[link boost_asio.reference.ssl__basic_context.password_purpose [*password_purpose]]]
- [Purpose of PEM password. ]
+[variablelist
   
- ]
+[[buffers][The buffers into which the data will be read.]]
 
- [
+]
 
- [[link boost_asio.reference.ssl__basic_context.service_type [*service_type]]]
- [The type of the service that will be used to provide context operations. ]
-
- ]
+[heading Return Value]
+
+The number of bytes read.
 
- [
+[heading Exceptions]
+
 
- [[link boost_asio.reference.ssl__basic_context.verify_mode [*verify_mode]]]
- [Bitmask type for peer verification. ]
+[variablelist
   
- ]
+[[boost::system::system_error][Thrown on failure. ]]
 
 ]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.ssl__basic_context.add_verify_path [*add_verify_path]]]
- [Add a directory containing certificate authority files to be used for performing verification. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__basic_context.basic_context [*basic_context]]]
- [Constructor. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__basic_context.impl [*impl]]]
- [Get the underlying implementation in the native type. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__basic_context.load_verify_file [*load_verify_file]]]
- [Load a certification authority file for performing verification. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__basic_context.set_options [*set_options]]]
- [Set options on the context. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__basic_context.set_password_callback [*set_password_callback]]]
- [Set the password callback. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__basic_context.set_verify_mode [*set_verify_mode]]]
- [Set the peer verification mode. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__basic_context.use_certificate_chain_file [*use_certificate_chain_file]]]
- [Use a certificate chain from a file. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__basic_context.use_certificate_file [*use_certificate_file]]]
- [Use a certificate from a file. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__basic_context.use_private_key_file [*use_private_key_file]]]
- [Use a private key from a file. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__basic_context.use_rsa_private_key_file [*use_rsa_private_key_file]]]
- [Use an RSA private key from a file. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__basic_context.use_tmp_dh_file [*use_tmp_dh_file]]]
- [Use the specified file to obtain the temporary Diffie-Hellman parameters. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__basic_context._basic_context [*~basic_context]]]
- [Destructor. ]
- ]
-
-]
 
-[heading Data Members]
-[table
- [[Name][Description]]
+[endsect]
 
- [
- [[link boost_asio.reference.ssl__basic_context.default_workarounds [*default_workarounds]]]
- [Implement various bug workarounds. ]
- ]
 
- [
- [[link boost_asio.reference.ssl__basic_context.no_sslv2 [*no_sslv2]]]
- [Disable SSL v2. ]
- ]
 
- [
- [[link boost_asio.reference.ssl__basic_context.no_sslv3 [*no_sslv3]]]
- [Disable SSL v3. ]
- ]
+[section:overload2 ssl::stream::peek (2 of 2 overloads)]
 
- [
- [[link boost_asio.reference.ssl__basic_context.no_tlsv1 [*no_tlsv1]]]
- [Disable TLS v1. ]
- ]
+Peek at the incoming data on the stream.
 
- [
- [[link boost_asio.reference.ssl__basic_context.single_dh_use [*single_dh_use]]]
- [Always create a new key when using tmp_dh parameters. ]
- ]
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t peek(
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
 
- [
- [[link boost_asio.reference.ssl__basic_context.verify_client_once [*verify_client_once]]]
- [Do not request client certificate on renegotiation. Ignored unless verify_peer is set. ]
- ]
 
- [
- [[link boost_asio.reference.ssl__basic_context.verify_fail_if_no_peer_cert [*verify_fail_if_no_peer_cert]]]
- [Fail verification if the peer has no certificate. Ignored unless verify_peer is set. ]
- ]
+This function is used to peek at the incoming data on the stream, withoutxi removing it from the input queue. The function call will block until data has been read successfully or an error occurs.
 
- [
- [[link boost_asio.reference.ssl__basic_context.verify_none [*verify_none]]]
- [No verification. ]
- ]
 
- [
- [[link boost_asio.reference.ssl__basic_context.verify_peer [*verify_peer]]]
- [Verify the peer. ]
- ]
+[heading Parameters]
+
+
+[variablelist
+
+[[buffers][The buffers into which the data will be read.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
 
 ]
 
+[heading Return Value]
+
+The number of bytes read. Returns 0 if an error occurred.
+
 
 
 [endsect]
 
 
-[section:ssl__context_base ssl::context_base]
+[endsect]
 
-The context_base class is used as a base for the basic_context class template so that we have a common place to define various enums.
+[section:read_some ssl::stream::read_some]
 
- class context_base
+Read some data from the stream.
 
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.ssl__stream.read_some.overload1 read_some]``(
+ const MutableBufferSequence & buffers);
 
-[heading Types]
-[table
- [[Name][Description]]
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.ssl__stream.read_some.overload2 read_some]``(
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
 
- [
 
- [[link boost_asio.reference.ssl__context_base.file_format [*file_format]]]
- [File format types. ]
-
- ]
+[section:overload1 ssl::stream::read_some (1 of 2 overloads)]
 
- [
+Read some data from the stream.
 
- [[link boost_asio.reference.ssl__context_base.method [*method]]]
- [Different methods supported by a context. ]
-
- ]
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some(
+ const MutableBufferSequence & buffers);
 
- [
 
- [[link boost_asio.reference.ssl__context_base.options [*options]]]
- [Bitmask type for SSL options. ]
-
- ]
+This function is used to read data from the stream. The function call will block until one or more bytes of data has been read successfully, or until an error occurs.
 
- [
 
- [[link boost_asio.reference.ssl__context_base.password_purpose [*password_purpose]]]
- [Purpose of PEM password. ]
+[heading Parameters]
+
+
+[variablelist
   
- ]
+[[buffers][The buffers into which the data will be read.]]
 
- [
+]
 
- [[link boost_asio.reference.ssl__context_base.verify_mode [*verify_mode]]]
- [Bitmask type for peer verification. ]
+[heading Return Value]
+
+The number of bytes read.
+
+[heading Exceptions]
+
+
+[variablelist
   
- ]
+[[boost::system::system_error][Thrown on failure.]]
 
 ]
 
-[heading Data Members]
-[table
- [[Name][Description]]
+[heading Remarks]
+
+The read\_some operation may not read all of the requested number of bytes. Consider using the
+[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
 
- [
- [[link boost_asio.reference.ssl__context_base.default_workarounds [*default_workarounds]]]
- [Implement various bug workarounds. ]
- ]
 
- [
- [[link boost_asio.reference.ssl__context_base.no_sslv2 [*no_sslv2]]]
- [Disable SSL v2. ]
- ]
 
- [
- [[link boost_asio.reference.ssl__context_base.no_sslv3 [*no_sslv3]]]
- [Disable SSL v3. ]
- ]
+[endsect]
 
- [
- [[link boost_asio.reference.ssl__context_base.no_tlsv1 [*no_tlsv1]]]
- [Disable TLS v1. ]
- ]
 
- [
- [[link boost_asio.reference.ssl__context_base.single_dh_use [*single_dh_use]]]
- [Always create a new key when using tmp_dh parameters. ]
- ]
 
- [
- [[link boost_asio.reference.ssl__context_base.verify_client_once [*verify_client_once]]]
- [Do not request client certificate on renegotiation. Ignored unless verify_peer is set. ]
- ]
+[section:overload2 ssl::stream::read_some (2 of 2 overloads)]
 
- [
- [[link boost_asio.reference.ssl__context_base.verify_fail_if_no_peer_cert [*verify_fail_if_no_peer_cert]]]
- [Fail verification if the peer has no certificate. Ignored unless verify_peer is set. ]
- ]
+Read some data from the stream.
 
- [
- [[link boost_asio.reference.ssl__context_base.verify_none [*verify_none]]]
- [No verification. ]
- ]
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some(
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
 
- [
- [[link boost_asio.reference.ssl__context_base.verify_peer [*verify_peer]]]
- [Verify the peer. ]
- ]
+
+This function is used to read data from the stream. The function call will block until one or more bytes of data has been read successfully, or until an error occurs.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[buffers][The buffers into which the data will be read.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
 
 ]
 
+[heading Return Value]
+
+The number of bytes read. Returns 0 if an error occurred.
 
-[section:default_workarounds ssl::context_base::default_workarounds]
+[heading Remarks]
+
+The read\_some operation may not read all of the requested number of bytes. Consider using the
+[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
 
-Implement various bug workarounds.
 
- static const int default_workarounds = implementation_defined;
 
+[endsect]
 
 
 [endsect]
 
 
+[section:service_type ssl::stream::service_type]
 
-[section:file_format ssl::context_base::file_format]
+The type of the service that will be used to provide stream operations.
 
-File format types.
+ typedef Service service_type;
 
- enum file_format
 
-[heading Values]
-[variablelist
 
- [
- [asn1]
- [ASN.1 file. ]
- ]
 
- [
- [pem]
- [PEM file. ]
- ]
+[endsect]
 
-]
 
+[section:shutdown ssl::stream::shutdown]
 
+Shut down SSL on the stream.
 
-[endsect]
+ void ``[link boost_asio.reference.ssl__stream.shutdown.overload1 shutdown]``();
 
+ boost::system::error_code ``[link boost_asio.reference.ssl__stream.shutdown.overload2 shutdown]``(
+ boost::system::error_code & ec);
 
 
-[section:method ssl::context_base::method]
+[section:overload1 ssl::stream::shutdown (1 of 2 overloads)]
 
-Different methods supported by a context.
+Shut down SSL on the stream.
 
- enum method
+ void shutdown();
+
+
+This function is used to shut down SSL on the stream. The function call will block until SSL has been shut down or an error occurs.
+
+
+[heading Exceptions]
+
 
-[heading Values]
 [variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
- [
- [sslv2]
- [Generic SSL version 2. ]
- ]
+]
 
- [
- [sslv2_client]
- [SSL version 2 client. ]
- ]
 
- [
- [sslv2_server]
- [SSL version 2 server. ]
- ]
 
- [
- [sslv3]
- [Generic SSL version 3. ]
- ]
+[endsect]
 
- [
- [sslv3_client]
- [SSL version 3 client. ]
- ]
 
- [
- [sslv3_server]
- [SSL version 3 server. ]
- ]
 
- [
- [tlsv1]
- [Generic TLS version 1. ]
- ]
+[section:overload2 ssl::stream::shutdown (2 of 2 overloads)]
 
- [
- [tlsv1_client]
- [TLS version 1 client. ]
- ]
+Shut down SSL on the stream.
 
- [
- [tlsv1_server]
- [TLS version 1 server. ]
- ]
+ boost::system::error_code shutdown(
+ boost::system::error_code & ec);
 
- [
- [sslv23]
- [Generic SSL/TLS. ]
- ]
 
- [
- [sslv23_client]
- [SSL/TLS client. ]
- ]
+This function is used to shut down SSL on the stream. The function call will block until SSL has been shut down or an error occurs.
 
- [
- [sslv23_server]
- [SSL/TLS server. ]
- ]
+
+[heading Parameters]
+
+
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any. ]]
 
 ]
 
@@ -35560,100 +43478,149 @@
 [endsect]
 
 
+[endsect]
 
-[section:no_sslv2 ssl::context_base::no_sslv2]
 
-Disable SSL v2.
+[section:stream ssl::stream::stream]
 
- static const int no_sslv2 = implementation_defined;
+Construct a stream.
 
+ template<
+ typename Arg,
+ typename Context_Service>
+ stream(
+ Arg & arg,
+ basic_context< Context_Service > & context);
 
 
-[endsect]
+This constructor creates a stream and initialises the underlying stream object.
 
 
+[heading Parameters]
+
 
-[section:no_sslv3 ssl::context_base::no_sslv3]
+[variablelist
+
+[[arg][The argument to be passed to initialise the underlying stream.]]
 
-Disable SSL v3.
+[[context][The SSL context to be used for the stream. ]]
 
- static const int no_sslv3 = implementation_defined;
+]
 
 
 
 [endsect]
 
 
+[section:write_some ssl::stream::write_some]
 
-[section:no_tlsv1 ssl::context_base::no_tlsv1]
+Write some data to the stream.
 
-Disable TLS v1.
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.ssl__stream.write_some.overload1 write_some]``(
+ const ConstBufferSequence & buffers);
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.ssl__stream.write_some.overload2 write_some]``(
+ const ConstBufferSequence & buffers,
+ boost::system::error_code & ec);
 
- static const int no_tlsv1 = implementation_defined;
 
+[section:overload1 ssl::stream::write_some (1 of 2 overloads)]
 
+Write some data to the stream.
 
-[endsect]
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some(
+ const ConstBufferSequence & buffers);
 
 
+This function is used to write data on the stream. The function call will block until one or more bytes of data has been written successfully, or until an error occurs.
 
-[section:options ssl::context_base::options]
 
-Bitmask type for SSL options.
+[heading Parameters]
+
 
- typedef int options;
+[variablelist
+
+[[buffers][The data to be written.]]
 
+]
 
+[heading Return Value]
+
+The number of bytes written.
 
+[heading Exceptions]
+
 
-[endsect]
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
 
+]
 
+[heading Remarks]
+
+The write\_some operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
 
-[section:password_purpose ssl::context_base::password_purpose]
 
-Purpose of PEM password.
 
- enum password_purpose
+[endsect]
 
-[heading Values]
-[variablelist
 
- [
- [for_reading]
- [The password is needed for reading/decryption. ]
- ]
 
- [
- [for_writing]
- [The password is needed for writing/encryption. ]
- ]
+[section:overload2 ssl::stream::write_some (2 of 2 overloads)]
 
-]
+Write some data to the stream.
 
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some(
+ const ConstBufferSequence & buffers,
+ boost::system::error_code & ec);
 
 
-[endsect]
+This function is used to write data on the stream. The function call will block until one or more bytes of data has been written successfully, or until an error occurs.
 
 
+[heading Parameters]
+
 
-[section:single_dh_use ssl::context_base::single_dh_use]
+[variablelist
+
+[[buffers][The data to be written to the stream.]]
 
-Always create a new key when using tmp_dh parameters.
+[[ec][Set to indicate what error occurred, if any.]]
 
- static const int single_dh_use = implementation_defined;
+]
+
+[heading Return Value]
+
+The number of bytes written. Returns 0 if an error occurred.
+
+[heading Remarks]
+
+The write\_some operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:verify_client_once ssl::context_base::verify_client_once]
 
-Do not request client certificate on renegotiation. Ignored unless verify_peer is set.
+[section:_stream ssl::stream::~stream]
+
+Destructor.
 
- static const int verify_client_once = implementation_defined;
+ ~stream();
 
 
 
@@ -35661,36 +43628,60 @@
 
 
 
-[section:verify_fail_if_no_peer_cert ssl::context_base::verify_fail_if_no_peer_cert]
-
-Fail verification if the peer has no certificate. Ignored unless verify_peer is set.
+[endsect]
 
- static const int verify_fail_if_no_peer_cert = implementation_defined;
+[section:ssl__stream_base ssl::stream_base]
 
+The stream_base class is used as a base for the boost::asio::ssl::stream class template so that we have a common place to define various enums.
 
+ class stream_base
 
-[endsect]
 
+[heading Types]
+[table
+ [[Name][Description]]
 
+ [
 
-[section:verify_mode ssl::context_base::verify_mode]
+ [[link boost_asio.reference.ssl__stream_base.handshake_type [*handshake_type]]]
+ [Different handshake types. ]
+
+ ]
 
-Bitmask type for peer verification.
+]
 
- typedef int verify_mode;
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.ssl__stream_base._stream_base [*~stream_base]]]
+ [Protected destructor to prevent deletion through this type. ]
+ ]
+
+]
 
 
+[section:handshake_type ssl::stream_base::handshake_type]
 
-[endsect]
+Different handshake types.
 
+ enum handshake_type
 
+[heading Values]
+[variablelist
 
-[section:verify_none ssl::context_base::verify_none]
+ [
+ [client]
+ [Perform handshaking as a client. ]
+ ]
 
-No verification.
+ [
+ [server]
+ [Perform handshaking as a server. ]
+ ]
 
- static const int verify_none = implementation_defined;
+]
 
 
 
@@ -35698,11 +43689,11 @@
 
 
 
-[section:verify_peer ssl::context_base::verify_peer]
+[section:_stream_base ssl::stream_base::~stream_base]
 
-Verify the peer.
+Protected destructor to prevent deletion through this type.
 
- static const int verify_peer = implementation_defined;
+ ~stream_base();
 
 
 
@@ -35712,11 +43703,11 @@
 
 [endsect]
 
-[section:ssl__context_service ssl::context_service]
+[section:ssl__stream_service ssl::stream_service]
 
-Default service implementation for a context.
+Default service implementation for an SSL stream.
 
- class context_service :
+ class stream_service :
     public io_service::service
 
 
@@ -35726,8 +43717,8 @@
 
   [
 
- [[link boost_asio.reference.ssl__context_service.impl_type [*impl_type]]]
- [The type of the context. ]
+ [[link boost_asio.reference.ssl__stream_service.impl_type [*impl_type]]]
+ [The type of a stream implementation. ]
   
   ]
 
@@ -35738,88 +43729,88 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.ssl__context_service.add_verify_path [*add_verify_path]]]
- [Add a directory containing certification authority files to be used for performing verification. ]
+ [[link boost_asio.reference.ssl__stream_service.async_handshake [*async_handshake]]]
+ [Start an asynchronous SSL handshake. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__context_service.context_service [*context_service]]]
- [Constructor. ]
+ [[link boost_asio.reference.ssl__stream_service.async_read_some [*async_read_some]]]
+ [Start an asynchronous read. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__context_service.create [*create]]]
- [Create a new context implementation. ]
+ [[link boost_asio.reference.ssl__stream_service.async_shutdown [*async_shutdown]]]
+ [Asynchronously shut down SSL on the stream. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__context_service.destroy [*destroy]]]
- [Destroy a context implementation. ]
+ [[link boost_asio.reference.ssl__stream_service.async_write_some [*async_write_some]]]
+ [Start an asynchronous write. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__context_service.get_io_service [*get_io_service]]]
- [Get the io_service object that owns the service. ]
+ [[link boost_asio.reference.ssl__stream_service.create [*create]]]
+ [Create a new stream implementation. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__context_service.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
+ [[link boost_asio.reference.ssl__stream_service.destroy [*destroy]]]
+ [Destroy a stream implementation. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__context_service.load_verify_file [*load_verify_file]]]
- [Load a certification authority file for performing verification. ]
+ [[link boost_asio.reference.ssl__stream_service.get_io_service [*get_io_service]]]
+ [Get the io_service object that owns the service. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__context_service.null [*null]]]
- [Return a null context implementation. ]
+ [[link boost_asio.reference.ssl__stream_service.handshake [*handshake]]]
+ [Perform SSL handshaking. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__context_service.set_options [*set_options]]]
- [Set options on the context. ]
+ [[link boost_asio.reference.ssl__stream_service.in_avail [*in_avail]]]
+ [Determine the amount of data that may be read without blocking. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__context_service.set_password_callback [*set_password_callback]]]
- [Set the password callback. ]
+ [[link boost_asio.reference.ssl__stream_service.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__context_service.set_verify_mode [*set_verify_mode]]]
- [Set peer verification mode. ]
+ [[link boost_asio.reference.ssl__stream_service.null [*null]]]
+ [Return a null stream implementation. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__context_service.shutdown_service [*shutdown_service]]]
- [Destroy all user-defined handler objects owned by the service. ]
+ [[link boost_asio.reference.ssl__stream_service.peek [*peek]]]
+ [Peek at the incoming data on the stream. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__context_service.use_certificate_chain_file [*use_certificate_chain_file]]]
- [Use a certificate chain from a file. ]
+ [[link boost_asio.reference.ssl__stream_service.read_some [*read_some]]]
+ [Read some data from the stream. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__context_service.use_certificate_file [*use_certificate_file]]]
- [Use a certificate from a file. ]
+ [[link boost_asio.reference.ssl__stream_service.shutdown [*shutdown]]]
+ [Shut down SSL on the stream. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__context_service.use_private_key_file [*use_private_key_file]]]
- [Use a private key from a file. ]
+ [[link boost_asio.reference.ssl__stream_service.shutdown_service [*shutdown_service]]]
+ [Destroy all user-defined handler objects owned by the service. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__context_service.use_rsa_private_key_file [*use_rsa_private_key_file]]]
- [Use an RSA private key from a file. ]
+ [[link boost_asio.reference.ssl__stream_service.stream_service [*stream_service]]]
+ [Construct a new stream service for the specified io_service. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__context_service.use_tmp_dh_file [*use_tmp_dh_file]]]
- [Use the specified file to obtain the temporary Diffie-Hellman parameters. ]
+ [[link boost_asio.reference.ssl__stream_service.write_some [*write_some]]]
+ [Write some data to the stream. ]
   ]
   
 ]
@@ -35829,21 +43820,25 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.ssl__context_service.id [*id]]]
+ [[link boost_asio.reference.ssl__stream_service.id [*id]]]
     [The unique service identifier. ]
   ]
 
 ]
 
 
-[section:add_verify_path ssl::context_service::add_verify_path]
+[section:async_handshake ssl::stream_service::async_handshake]
 
-Add a directory containing certification authority files to be used for performing verification.
+Start an asynchronous SSL handshake.
 
- boost::system::error_code add_verify_path(
+ template<
+ typename Stream,
+ typename HandshakeHandler>
+ void async_handshake(
       impl_type & impl,
- const std::string & path,
- boost::system::error_code & ec);
+ Stream & next_layer,
+ stream_base::handshake_type type,
+ HandshakeHandler handler);
 
 
 
@@ -35851,12 +43846,19 @@
 
 
 
-[section:context_service ssl::context_service::context_service]
+[section:async_read_some ssl::stream_service::async_read_some]
 
-Constructor.
+Start an asynchronous read.
 
- context_service(
- boost::asio::io_service & io_service);
+ template<
+ typename Stream,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_read_some(
+ impl_type & impl,
+ Stream & next_layer,
+ const MutableBufferSequence & buffers,
+ ReadHandler handler);
 
 
 
@@ -35864,13 +43866,55 @@
 
 
 
-[section:create ssl::context_service::create]
+[section:async_shutdown ssl::stream_service::async_shutdown]
+
+Asynchronously shut down SSL on the stream.
+
+ template<
+ typename Stream,
+ typename ShutdownHandler>
+ void async_shutdown(
+ impl_type & impl,
+ Stream & next_layer,
+ ShutdownHandler handler);
+
+
+
+[endsect]
+
+
+
+[section:async_write_some ssl::stream_service::async_write_some]
+
+Start an asynchronous write.
+
+ template<
+ typename Stream,
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_write_some(
+ impl_type & impl,
+ Stream & next_layer,
+ const ConstBufferSequence & buffers,
+ WriteHandler handler);
 
-Create a new context implementation.
 
+
+[endsect]
+
+
+
+[section:create ssl::stream_service::create]
+
+Create a new stream implementation.
+
+ template<
+ typename Stream,
+ typename Context_Service>
   void create(
       impl_type & impl,
- context_base::method m);
+ Stream & next_layer,
+ basic_context< Context_Service > & context);
 
 
 
@@ -35878,12 +43922,15 @@
 
 
 
-[section:destroy ssl::context_service::destroy]
+[section:destroy ssl::stream_service::destroy]
 
-Destroy a context implementation.
+Destroy a stream implementation.
 
+ template<
+ typename Stream>
   void destroy(
- impl_type & impl);
+ impl_type & impl,
+ Stream & next_layer);
 
 
 
@@ -35891,7 +43938,7 @@
 
 
 
-[section:get_io_service ssl::context_service::get_io_service]
+[section:get_io_service ssl::stream_service::get_io_service]
 
 
 ['Inherited from io_service.]
@@ -35906,11 +43953,17 @@
 
 
 
-[section:id ssl::context_service::id]
+[section:handshake ssl::stream_service::handshake]
 
-The unique service identifier.
+Perform SSL handshaking.
 
- static boost::asio::io_service::id id;
+ template<
+ typename Stream>
+ boost::system::error_code handshake(
+ impl_type & impl,
+ Stream & next_layer,
+ stream_base::handshake_type type,
+ boost::system::error_code & ec);
 
 
 
@@ -35918,12 +43971,11 @@
 
 
 
-[section:impl_type ssl::context_service::impl_type]
-
-The type of the context.
+[section:id ssl::stream_service::id]
 
- typedef implementation_defined impl_type;
+The unique service identifier.
 
+ static boost::asio::io_service::id id;
 
 
 
@@ -35931,14 +43983,12 @@
 
 
 
-[section:io_service ssl::context_service::io_service]
-
+[section:impl_type ssl::stream_service::impl_type]
 
-['Inherited from io_service.]
+The type of a stream implementation.
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+ typedef implementation_defined impl_type;
 
- boost::asio::io_service & io_service();
 
 
 
@@ -35946,13 +43996,15 @@
 
 
 
-[section:load_verify_file ssl::context_service::load_verify_file]
+[section:in_avail ssl::stream_service::in_avail]
 
-Load a certification authority file for performing verification.
+Determine the amount of data that may be read without blocking.
 
- boost::system::error_code load_verify_file(
+ template<
+ typename Stream>
+ std::size_t in_avail(
       impl_type & impl,
- const std::string & filename,
+ Stream & next_layer,
       boost::system::error_code & ec);
 
 
@@ -35961,11 +44013,14 @@
 
 
 
-[section:null ssl::context_service::null]
+[section:io_service ssl::stream_service::io_service]
 
-Return a null context implementation.
 
- impl_type null() const;
+['Inherited from io_service.]
+
+(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+
+ boost::asio::io_service & io_service();
 
 
 
@@ -35973,14 +44028,11 @@
 
 
 
-[section:set_options ssl::context_service::set_options]
+[section:null ssl::stream_service::null]
 
-Set options on the context.
+Return a null stream implementation.
 
- boost::system::error_code set_options(
- impl_type & impl,
- context_base::options o,
- boost::system::error_code & ec);
+ impl_type null() const;
 
 
 
@@ -35988,15 +44040,17 @@
 
 
 
-[section:set_password_callback ssl::context_service::set_password_callback]
+[section:peek ssl::stream_service::peek]
 
-Set the password callback.
+Peek at the incoming data on the stream.
 
   template<
- typename PasswordCallback>
- boost::system::error_code set_password_callback(
+ typename Stream,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t peek(
       impl_type & impl,
- PasswordCallback callback,
+ Stream & next_layer,
+ const MutableBufferSequence & buffers,
       boost::system::error_code & ec);
 
 
@@ -36005,13 +44059,17 @@
 
 
 
-[section:set_verify_mode ssl::context_service::set_verify_mode]
+[section:read_some ssl::stream_service::read_some]
 
-Set peer verification mode.
+Read some data from the stream.
 
- boost::system::error_code set_verify_mode(
+ template<
+ typename Stream,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some(
       impl_type & impl,
- context_base::verify_mode v,
+ Stream & next_layer,
+ const MutableBufferSequence & buffers,
       boost::system::error_code & ec);
 
 
@@ -36020,11 +44078,16 @@
 
 
 
-[section:shutdown_service ssl::context_service::shutdown_service]
+[section:shutdown ssl::stream_service::shutdown]
 
-Destroy all user-defined handler objects owned by the service.
+Shut down SSL on the stream.
 
- void shutdown_service();
+ template<
+ typename Stream>
+ boost::system::error_code shutdown(
+ impl_type & impl,
+ Stream & next_layer,
+ boost::system::error_code & ec);
 
 
 
@@ -36032,14 +44095,11 @@
 
 
 
-[section:use_certificate_chain_file ssl::context_service::use_certificate_chain_file]
+[section:shutdown_service ssl::stream_service::shutdown_service]
 
-Use a certificate chain from a file.
+Destroy all user-defined handler objects owned by the service.
 
- boost::system::error_code use_certificate_chain_file(
- impl_type & impl,
- const std::string & filename,
- boost::system::error_code & ec);
+ void shutdown_service();
 
 
 
@@ -36047,15 +44107,12 @@
 
 
 
-[section:use_certificate_file ssl::context_service::use_certificate_file]
+[section:stream_service ssl::stream_service::stream_service]
 
-Use a certificate from a file.
+Construct a new stream service for the specified io_service.
 
- boost::system::error_code use_certificate_file(
- impl_type & impl,
- const std::string & filename,
- context_base::file_format format,
- boost::system::error_code & ec);
+ stream_service(
+ boost::asio::io_service & io_service);
 
 
 
@@ -36063,14 +44120,17 @@
 
 
 
-[section:use_private_key_file ssl::context_service::use_private_key_file]
+[section:write_some ssl::stream_service::write_some]
 
-Use a private key from a file.
+Write some data to the stream.
 
- boost::system::error_code use_private_key_file(
+ template<
+ typename Stream,
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some(
       impl_type & impl,
- const std::string & filename,
- context_base::file_format format,
+ Stream & next_layer,
+ const ConstBufferSequence & buffers,
       boost::system::error_code & ec);
 
 
@@ -36079,48 +44139,80 @@
 
 
 
-[section:use_rsa_private_key_file ssl::context_service::use_rsa_private_key_file]
-
-Use an RSA private key from a file.
+[endsect]
 
- boost::system::error_code use_rsa_private_key_file(
- impl_type & impl,
- const std::string & filename,
- context_base::file_format format,
- boost::system::error_code & ec);
 
+[section:strand strand]
 
+Typedef for backwards compatibility.
 
-[endsect]
+ typedef boost::asio::io_service::strand strand;
 
 
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
-[section:use_tmp_dh_file ssl::context_service::use_tmp_dh_file]
+ [
+ [[link boost_asio.reference.io_service__strand.dispatch [*dispatch]]]
+ [Request the strand to invoke the given handler. ]
+ ]
+
+ [
+ [[link boost_asio.reference.io_service__strand.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the strand. ]
+ ]
+
+ [
+ [[link boost_asio.reference.io_service__strand.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the strand. ]
+ ]
+
+ [
+ [[link boost_asio.reference.io_service__strand.post [*post]]]
+ [Request the strand to invoke the given handler and return immediately. ]
+ ]
+
+ [
+ [[link boost_asio.reference.io_service__strand.strand [*strand]]]
+ [Constructor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.io_service__strand.wrap [*wrap]]]
+ [Create a new handler that automatically dispatches the wrapped handler on the strand. ]
+ ]
+
+ [
+ [[link boost_asio.reference.io_service__strand._strand [*~strand]]]
+ [Destructor. ]
+ ]
+
+]
 
-Use the specified file to obtain the temporary Diffie-Hellman parameters.
+The io_service::strand class provides the ability to post and dispatch handlers with the guarantee that none of those handlers will execute concurrently.
 
- boost::system::error_code use_tmp_dh_file(
- impl_type & impl,
- const std::string & filename,
- boost::system::error_code & ec);
 
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
 
+[*Shared] [*objects:] Safe.
 
-[endsect]
 
 
 
 [endsect]
 
-[section:ssl__stream ssl::stream]
 
-Provides stream-oriented functionality using SSL.
+[section:stream_socket_service stream_socket_service]
+
+Default service implementation for a stream socket.
 
   template<
- typename Stream,
- typename ``[link boost_asio.reference.Service Service]`` = stream_service>
- class stream :
- public ssl::stream_base
+ typename ``[link boost_asio.reference.Protocol Protocol]``>
+ class stream_socket_service :
+ public io_service::service
 
 
 [heading Types]
@@ -36129,36 +44221,29 @@
 
   [
 
- [[link boost_asio.reference.ssl__stream.handshake_type [*handshake_type]]]
- [Different handshake types. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.ssl__stream.impl_type [*impl_type]]]
- [The native implementation type of the stream. ]
+ [[link boost_asio.reference.stream_socket_service.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.ssl__stream.lowest_layer_type [*lowest_layer_type]]]
- [The type of the lowest layer. ]
+ [[link boost_asio.reference.stream_socket_service.implementation_type [*implementation_type]]]
+ [The type of a stream socket implementation. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.ssl__stream.next_layer_type [*next_layer_type]]]
- [The type of the next layer. ]
+ [[link boost_asio.reference.stream_socket_service.native_type [*native_type]]]
+ [The native socket type. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.ssl__stream.service_type [*service_type]]]
- [The type of the service that will be used to provide stream operations. ]
+ [[link boost_asio.reference.stream_socket_service.protocol_type [*protocol_type]]]
+ [The protocol type. ]
   
   ]
 
@@ -36169,145 +44254,180 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.ssl__stream.async_handshake [*async_handshake]]]
- [Start an asynchronous SSL handshake. ]
+ [[link boost_asio.reference.stream_socket_service.assign [*assign]]]
+ [Assign an existing native socket to a stream socket. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.async_read_some [*async_read_some]]]
- [Start an asynchronous read. ]
+ [[link boost_asio.reference.stream_socket_service.async_connect [*async_connect]]]
+ [Start an asynchronous connect. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.async_shutdown [*async_shutdown]]]
- [Asynchronously shut down SSL on the stream. ]
+ [[link boost_asio.reference.stream_socket_service.async_receive [*async_receive]]]
+ [Start an asynchronous receive. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.async_write_some [*async_write_some]]]
- [Start an asynchronous write. ]
+ [[link boost_asio.reference.stream_socket_service.async_send [*async_send]]]
+ [Start an asynchronous send. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.get_io_service [*get_io_service]]]
- [Get the io_service associated with the object. ]
+ [[link boost_asio.reference.stream_socket_service.at_mark [*at_mark]]]
+ [Determine whether the socket is at the out-of-band data mark. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.handshake [*handshake]]]
- [Perform SSL handshaking. ]
+ [[link boost_asio.reference.stream_socket_service.available [*available]]]
+ [Determine the number of bytes available for reading. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.bind [*bind]]]
+ [Bind the stream socket to the specified local endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.close [*close]]]
+ [Close a stream socket implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.connect [*connect]]]
+ [Connect the stream socket to the specified endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.construct [*construct]]]
+ [Construct a new stream socket implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.destroy [*destroy]]]
+ [Destroy a stream socket implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.get_io_service [*get_io_service]]]
+ [Get the io_service object that owns the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.get_option [*get_option]]]
+ [Get a socket option. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.io_control [*io_control]]]
+ [Perform an IO control command on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.impl [*impl]]]
- [Get the underlying implementation in the native type. ]
+ [[link boost_asio.reference.stream_socket_service.is_open [*is_open]]]
+ [Determine whether the socket is open. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.in_avail [*in_avail]]]
- [Determine the amount of data that may be read without blocking. ]
+ [[link boost_asio.reference.stream_socket_service.local_endpoint [*local_endpoint]]]
+ [Get the local endpoint. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ [[link boost_asio.reference.stream_socket_service.native [*native]]]
+ [Get the native socket implementation. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.lowest_layer [*lowest_layer]]]
- [Get a reference to the lowest layer. ]
+ [[link boost_asio.reference.stream_socket_service.open [*open]]]
+ [Open a stream socket. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.next_layer [*next_layer]]]
- [Get a reference to the next layer. ]
+ [[link boost_asio.reference.stream_socket_service.receive [*receive]]]
+ [Receive some data from the peer. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.peek [*peek]]]
- [Peek at the incoming data on the stream. ]
+ [[link boost_asio.reference.stream_socket_service.remote_endpoint [*remote_endpoint]]]
+ [Get the remote endpoint. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.read_some [*read_some]]]
- [Read some data from the stream. ]
+ [[link boost_asio.reference.stream_socket_service.send [*send]]]
+ [Send the given data to the peer. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.shutdown [*shutdown]]]
- [Shut down SSL on the stream. ]
+ [[link boost_asio.reference.stream_socket_service.set_option [*set_option]]]
+ [Set a socket option. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.stream [*stream]]]
- [Construct a stream. ]
+ [[link boost_asio.reference.stream_socket_service.shutdown [*shutdown]]]
+ [Disable sends or receives on the socket. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.write_some [*write_some]]]
- [Write some data to the stream. ]
+ [[link boost_asio.reference.stream_socket_service.shutdown_service [*shutdown_service]]]
+ [Destroy all user-defined handler objects owned by the service. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream._stream [*~stream]]]
- [Destructor. ]
+ [[link boost_asio.reference.stream_socket_service.stream_socket_service [*stream_socket_service]]]
+ [Construct a new stream socket service for the specified io_service. ]
   ]
   
 ]
 
-The stream class template provides asynchronous and blocking stream-oriented functionality using SSL.
-
-
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
-
-[*Shared] [*objects:] Unsafe.
-
-[heading Example]
-
-To use the SSL stream template with an ip::tcp::socket, you would write:
-
- boost::asio::io_service io_service;
- boost::asio::ssl::context context(io_service, boost::asio::ssl::context::sslv23);
- boost::asio::ssl::stream<boost::asio::ip::tcp::socket> sock(io_service, context);
-
-
+[heading Data Members]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.stream_socket_service.id [*id]]]
+ [The unique service identifier. ]
+ ]
 
+]
 
 
-[section:async_handshake ssl::stream::async_handshake]
+[section:assign stream_socket_service::assign]
 
-Start an asynchronous SSL handshake.
+Assign an existing native socket to a stream socket.
 
- template<
- typename HandshakeHandler>
- void async_handshake(
- handshake_type type,
- HandshakeHandler handler);
+ boost::system::error_code assign(
+ implementation_type & impl,
+ const protocol_type & protocol,
+ const native_type & native_socket,
+ boost::system::error_code & ec);
 
 
-This function is used to asynchronously perform an SSL handshake on the stream. This function call always returns immediately.
 
+[endsect]
 
-[heading Parameters]
-
 
-[variablelist
-
-[[type][The type of handshaking to be performed, i.e. as a client or as a server.]]
 
-[[handler][The handler to be called when the handshake operation completes. Copies will be made of the handler as required. The equivalent function signature of the handler must be:
-``
- void handler(
- const boost::system::error_code& error // Result of operation.
- );
+[section:async_connect stream_socket_service::async_connect]
 
-``
-]]
+Start an asynchronous connect.
 
-]
+ template<
+ typename ``[link boost_asio.reference.ConnectHandler ConnectHandler]``>
+ void async_connect(
+ implementation_type & impl,
+ const endpoint_type & peer_endpoint,
+ ConnectHandler handler);
 
 
 
@@ -36315,124 +44435,51 @@
 
 
 
-[section:async_read_some ssl::stream::async_read_some]
+[section:async_receive stream_socket_service::async_receive]
 
-Start an asynchronous read.
+Start an asynchronous receive.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_some(
+ void async_receive(
+ implementation_type & impl,
       const MutableBufferSequence & buffers,
+ socket_base::message_flags flags,
       ReadHandler handler);
 
 
-This function is used to asynchronously read one or more bytes of data from the stream. The function call always returns immediately.
-
-
-[heading Parameters]
-
-
-[variablelist
-
-[[buffers][The buffers into which the data will be read. Although the buffers object may be copied as necessary, ownership of the underlying buffers is retained by the caller, which must guarantee that they remain valid until the handler is called.]]
-
-[[handler][The handler to be called when the read operation completes. Copies will be made of the handler as required. The equivalent function signature of the handler must be:
-``
- void handler(
- const boost::system::error_code& error, // Result of operation.
- std::size_t bytes_transferred // Number of bytes read.
- );
-
-``
-]]
-
-]
-
-[heading Remarks]
-
-The async\_read\_some operation may not read all of the requested number of bytes. Consider using the
-[link boost_asio.reference.async_read async_read] function if you need to ensure that the requested amount of data is read before the asynchronous operation completes.
-
-
-
-[endsect]
-
-
-
-[section:async_shutdown ssl::stream::async_shutdown]
-
-Asynchronously shut down SSL on the stream.
-
- template<
- typename ShutdownHandler>
- void async_shutdown(
- ShutdownHandler handler);
-
-
-This function is used to asynchronously shut down SSL on the stream. This function call always returns immediately.
-
-
-[heading Parameters]
-
-
-[variablelist
-
-[[handler][The handler to be called when the handshake operation completes. Copies will be made of the handler as required. The equivalent function signature of the handler must be:
-``
- void handler(
- const boost::system::error_code& error // Result of operation.
- );
-
-``
-]]
-
-]
-
-
 
 [endsect]
 
 
 
-[section:async_write_some ssl::stream::async_write_some]
+[section:async_send stream_socket_service::async_send]
 
-Start an asynchronous write.
+Start an asynchronous send.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write_some(
+ void async_send(
+ implementation_type & impl,
       const ConstBufferSequence & buffers,
+ socket_base::message_flags flags,
       WriteHandler handler);
 
 
-This function is used to asynchronously write one or more bytes of data to the stream. The function call always returns immediately.
-
 
-[heading Parameters]
-
+[endsect]
 
-[variablelist
-
-[[buffers][The data to be written to the stream. Although the buffers object may be copied as necessary, ownership of the underlying buffers is retained by the caller, which must guarantee that they remain valid until the handler is called.]]
 
-[[handler][The handler to be called when the write operation completes. Copies will be made of the handler as required. The equivalent function signature of the handler must be:
-``
- void handler(
- const boost::system::error_code& error, // Result of operation.
- std::size_t bytes_transferred // Number of bytes written.
- );
 
-``
-]]
+[section:at_mark stream_socket_service::at_mark]
 
-]
+Determine whether the socket is at the out-of-band data mark.
 
-[heading Remarks]
-
-The async\_write\_some operation may not transmit all of the data to the peer. Consider using the
-[link boost_asio.reference.async_write async_write] function if you need to ensure that all data is written before the blocking operation completes.
+ bool at_mark(
+ const implementation_type & impl,
+ boost::system::error_code & ec) const;
 
 
 
@@ -36440,65 +44487,42 @@
 
 
 
-[section:get_io_service ssl::stream::get_io_service]
-
-Get the io_service associated with the object.
-
- boost::asio::io_service & get_io_service();
-
-
-This function may be used to obtain the io_service object that the stream uses to dispatch handlers for asynchronous operations.
+[section:available stream_socket_service::available]
 
+Determine the number of bytes available for reading.
 
-[heading Return Value]
-
-A reference to the io_service object that stream will use to dispatch handlers. Ownership is not transferred to the caller.
+ std::size_t available(
+ const implementation_type & impl,
+ boost::system::error_code & ec) const;
 
 
 
 [endsect]
 
 
-[section:handshake ssl::stream::handshake]
 
-Perform SSL handshaking.
+[section:bind stream_socket_service::bind]
 
- void ``[link boost_asio.reference.ssl__stream.handshake.overload1 handshake]``(
- handshake_type type);
+Bind the stream socket to the specified local endpoint.
 
- boost::system::error_code ``[link boost_asio.reference.ssl__stream.handshake.overload2 handshake]``(
- handshake_type type,
+ boost::system::error_code bind(
+ implementation_type & impl,
+ const endpoint_type & endpoint,
       boost::system::error_code & ec);
 
 
-[section:overload1 ssl::stream::handshake (1 of 2 overloads)]
-
-Perform SSL handshaking.
-
- void handshake(
- handshake_type type);
-
-
-This function is used to perform SSL handshaking on the stream. The function call will block until handshaking is complete or an error occurs.
-
 
-[heading Parameters]
-
+[endsect]
 
-[variablelist
-
-[[type][The type of handshaking to be performed, i.e. as a client or as a server.]]
 
-]
 
-[heading Exceptions]
-
+[section:cancel stream_socket_service::cancel]
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
+Cancel all asynchronous operations associated with the socket.
 
-]
+ boost::system::error_code cancel(
+ implementation_type & impl,
+ boost::system::error_code & ec);
 
 
 
@@ -36506,57 +44530,41 @@
 
 
 
-[section:overload2 ssl::stream::handshake (2 of 2 overloads)]
+[section:close stream_socket_service::close]
 
-Perform SSL handshaking.
+Close a stream socket implementation.
 
- boost::system::error_code handshake(
- handshake_type type,
+ boost::system::error_code close(
+ implementation_type & impl,
       boost::system::error_code & ec);
 
 
-This function is used to perform SSL handshaking on the stream. The function call will block until handshaking is complete or an error occurs.
-
 
-[heading Parameters]
-
+[endsect]
 
-[variablelist
-
-[[type][The type of handshaking to be performed, i.e. as a client or as a server.]]
 
-[[ec][Set to indicate what error occurred, if any. ]]
 
-]
+[section:connect stream_socket_service::connect]
 
+Connect the stream socket to the specified endpoint.
 
+ boost::system::error_code connect(
+ implementation_type & impl,
+ const endpoint_type & peer_endpoint,
+ boost::system::error_code & ec);
 
-[endsect]
 
 
 [endsect]
 
 
-[section:handshake_type ssl::stream::handshake_type]
-
-Different handshake types.
-
- enum handshake_type
-
-[heading Values]
-[variablelist
 
- [
- [client]
- [Perform handshaking as a client. ]
- ]
+[section:construct stream_socket_service::construct]
 
- [
- [server]
- [Perform handshaking as a server. ]
- ]
+Construct a new stream socket implementation.
 
-]
+ void construct(
+ implementation_type & impl);
 
 
 
@@ -36564,25 +44572,24 @@
 
 
 
-[section:impl ssl::stream::impl]
-
-Get the underlying implementation in the native type.
+[section:destroy stream_socket_service::destroy]
 
- impl_type impl();
+Destroy a stream socket implementation.
 
+ void destroy(
+ implementation_type & impl);
 
-This function may be used to obtain the underlying implementation of the context. This is intended to allow access to stream functionality that is not otherwise provided.
 
 
 [endsect]
 
 
 
-[section:impl_type ssl::stream::impl_type]
+[section:endpoint_type stream_socket_service::endpoint_type]
 
-The native implementation type of the stream.
+The endpoint type.
 
- typedef service_type::impl_type impl_type;
+ typedef Protocol::endpoint endpoint_type;
 
 
 
@@ -36590,38 +44597,32 @@
 [endsect]
 
 
-[section:in_avail ssl::stream::in_avail]
-
-Determine the amount of data that may be read without blocking.
 
- std::size_t ``[link boost_asio.reference.ssl__stream.in_avail.overload1 in_avail]``();
+[section:get_io_service stream_socket_service::get_io_service]
 
- std::size_t ``[link boost_asio.reference.ssl__stream.in_avail.overload2 in_avail]``(
- boost::system::error_code & ec);
 
+['Inherited from io_service.]
 
-[section:overload1 ssl::stream::in_avail (1 of 2 overloads)]
+Get the io_service object that owns the service.
 
-Determine the amount of data that may be read without blocking.
+ boost::asio::io_service & get_io_service();
 
- std::size_t in_avail();
 
 
-This function is used to determine the amount of data, in bytes, that may be read from the stream without blocking.
+[endsect]
 
 
-[heading Return Value]
-
-The number of bytes of data that can be read without blocking.
 
-[heading Exceptions]
-
+[section:get_option stream_socket_service::get_option]
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
+Get a socket option.
 
-]
+ template<
+ typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
+ boost::system::error_code get_option(
+ const implementation_type & impl,
+ GettableSocketOption & option,
+ boost::system::error_code & ec) const;
 
 
 
@@ -36629,51 +44630,41 @@
 
 
 
-[section:overload2 ssl::stream::in_avail (2 of 2 overloads)]
+[section:id stream_socket_service::id]
 
-Determine the amount of data that may be read without blocking.
+The unique service identifier.
 
- std::size_t in_avail(
- boost::system::error_code & ec);
+ static boost::asio::io_service::id id;
 
 
-This function is used to determine the amount of data, in bytes, that may be read from the stream without blocking.
 
+[endsect]
 
-[heading Parameters]
-
 
-[variablelist
-
-[[ec][Set to indicate what error occurred, if any.]]
 
-]
+[section:implementation_type stream_socket_service::implementation_type]
 
-[heading Return Value]
-
-The number of bytes of data that can be read without blocking.
+The type of a stream socket implementation.
 
+ typedef implementation_defined implementation_type;
 
 
-[endsect]
 
 
 [endsect]
 
 
-[section:io_service ssl::stream::io_service]
-
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
-
- boost::asio::io_service & io_service();
-
 
-This function may be used to obtain the io_service object that the stream uses to dispatch handlers for asynchronous operations.
+[section:io_control stream_socket_service::io_control]
 
+Perform an IO control command on the socket.
 
-[heading Return Value]
-
-A reference to the io_service object that stream will use to dispatch handlers. Ownership is not transferred to the caller.
+ template<
+ typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
+ boost::system::error_code io_control(
+ implementation_type & impl,
+ IoControlCommand & command,
+ boost::system::error_code & ec);
 
 
 
@@ -36681,19 +44672,14 @@
 
 
 
-[section:lowest_layer ssl::stream::lowest_layer]
-
-Get a reference to the lowest layer.
-
- lowest_layer_type & lowest_layer();
+[section:io_service stream_socket_service::io_service]
 
 
-This function returns a reference to the lowest layer in a stack of stream layers.
+['Inherited from io_service.]
 
+(Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
-[heading Return Value]
-
-A reference to the lowest layer in the stack of stream layers. Ownership is not transferred to the caller.
+ boost::asio::io_service & io_service();
 
 
 
@@ -36701,12 +44687,12 @@
 
 
 
-[section:lowest_layer_type ssl::stream::lowest_layer_type]
-
-The type of the lowest layer.
+[section:is_open stream_socket_service::is_open]
 
- typedef next_layer_type::lowest_layer_type lowest_layer_type;
+Determine whether the socket is open.
 
+ bool is_open(
+ const implementation_type & impl) const;
 
 
 
@@ -36714,19 +44700,13 @@
 
 
 
-[section:next_layer ssl::stream::next_layer]
-
-Get a reference to the next layer.
-
- next_layer_type & next_layer();
-
-
-This function returns a reference to the next layer in a stack of stream layers.
+[section:local_endpoint stream_socket_service::local_endpoint]
 
+Get the local endpoint.
 
-[heading Return Value]
-
-A reference to the next layer in the stack of stream layers. Ownership is not transferred to the caller.
+ endpoint_type local_endpoint(
+ const implementation_type & impl,
+ boost::system::error_code & ec) const;
 
 
 
@@ -36734,68 +44714,25 @@
 
 
 
-[section:next_layer_type ssl::stream::next_layer_type]
-
-The type of the next layer.
+[section:native stream_socket_service::native]
 
- typedef boost::remove_reference< Stream >::type next_layer_type;
+Get the native socket implementation.
 
+ native_type native(
+ implementation_type & impl);
 
 
 
 [endsect]
 
 
-[section:peek ssl::stream::peek]
-
-Peek at the incoming data on the stream.
-
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.ssl__stream.peek.overload1 peek]``(
- const MutableBufferSequence & buffers);
-
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.ssl__stream.peek.overload2 peek]``(
- const MutableBufferSequence & buffers,
- boost::system::error_code & ec);
-
-
-[section:overload1 ssl::stream::peek (1 of 2 overloads)]
-
-Peek at the incoming data on the stream.
-
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t peek(
- const MutableBufferSequence & buffers);
-
-
-This function is used to peek at the incoming data on the stream, without removing it from the input queue. The function call will block until data has been read successfully or an error occurs.
-
-
-[heading Parameters]
-
-
-[variablelist
-
-[[buffers][The buffers into which the data will be read.]]
-
-]
 
-[heading Return Value]
-
-The number of bytes read.
+[section:native_type stream_socket_service::native_type]
 
-[heading Exceptions]
-
+The native socket type.
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
+ typedef implementation_defined native_type;
 
-]
 
 
 
@@ -36803,97 +44740,77 @@
 
 
 
-[section:overload2 ssl::stream::peek (2 of 2 overloads)]
+[section:open stream_socket_service::open]
 
-Peek at the incoming data on the stream.
+Open a stream socket.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t peek(
- const MutableBufferSequence & buffers,
+ boost::system::error_code open(
+ implementation_type & impl,
+ const protocol_type & protocol,
       boost::system::error_code & ec);
 
 
-This function is used to peek at the incoming data on the stream, withoutxi removing it from the input queue. The function call will block until data has been read successfully or an error occurs.
-
 
-[heading Parameters]
-
+[endsect]
 
-[variablelist
-
-[[buffers][The buffers into which the data will be read.]]
 
-[[ec][Set to indicate what error occurred, if any.]]
 
-]
+[section:protocol_type stream_socket_service::protocol_type]
 
-[heading Return Value]
-
-The number of bytes read. Returns 0 if an error occurred.
+The protocol type.
 
+ typedef Protocol protocol_type;
 
 
-[endsect]
 
 
 [endsect]
 
-[section:read_some ssl::stream::read_some]
 
-Read some data from the stream.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.ssl__stream.read_some.overload1 read_some]``(
- const MutableBufferSequence & buffers);
+[section:receive stream_socket_service::receive]
+
+Receive some data from the peer.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.ssl__stream.read_some.overload2 read_some]``(
+ std::size_t receive(
+ implementation_type & impl,
       const MutableBufferSequence & buffers,
+ socket_base::message_flags flags,
       boost::system::error_code & ec);
 
 
-[section:overload1 ssl::stream::read_some (1 of 2 overloads)]
 
-Read some data from the stream.
+[endsect]
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t read_some(
- const MutableBufferSequence & buffers);
 
 
-This function is used to read data from the stream. The function call will block until one or more bytes of data has been read successfully, or until an error occurs.
+[section:remote_endpoint stream_socket_service::remote_endpoint]
 
+Get the remote endpoint.
 
-[heading Parameters]
-
+ endpoint_type remote_endpoint(
+ const implementation_type & impl,
+ boost::system::error_code & ec) const;
 
-[variablelist
-
-[[buffers][The buffers into which the data will be read.]]
 
-]
 
-[heading Return Value]
-
-The number of bytes read.
+[endsect]
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
 
-]
+[section:send stream_socket_service::send]
 
-[heading Remarks]
-
-The read\_some operation may not read all of the requested number of bytes. Consider using the
-[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
+Send the given data to the peer.
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t send(
+ implementation_type & impl,
+ const ConstBufferSequence & buffers,
+ socket_base::message_flags flags,
+ boost::system::error_code & ec);
 
 
 
@@ -36901,87 +44818,153 @@
 
 
 
-[section:overload2 ssl::stream::read_some (2 of 2 overloads)]
+[section:set_option stream_socket_service::set_option]
 
-Read some data from the stream.
+Set a socket option.
 
   template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t read_some(
- const MutableBufferSequence & buffers,
+ typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
+ boost::system::error_code set_option(
+ implementation_type & impl,
+ const SettableSocketOption & option,
       boost::system::error_code & ec);
 
 
-This function is used to read data from the stream. The function call will block until one or more bytes of data has been read successfully, or until an error occurs.
-
 
-[heading Parameters]
-
+[endsect]
 
-[variablelist
-
-[[buffers][The buffers into which the data will be read.]]
 
-[[ec][Set to indicate what error occurred, if any.]]
 
-]
+[section:shutdown stream_socket_service::shutdown]
 
-[heading Return Value]
-
-The number of bytes read. Returns 0 if an error occurred.
+Disable sends or receives on the socket.
 
-[heading Remarks]
-
-The read\_some operation may not read all of the requested number of bytes. Consider using the
-[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
+ boost::system::error_code shutdown(
+ implementation_type & impl,
+ socket_base::shutdown_type what,
+ boost::system::error_code & ec);
 
 
 
 [endsect]
 
 
+
+[section:shutdown_service stream_socket_service::shutdown_service]
+
+Destroy all user-defined handler objects owned by the service.
+
+ void shutdown_service();
+
+
+
 [endsect]
 
 
-[section:service_type ssl::stream::service_type]
 
-The type of the service that will be used to provide stream operations.
+[section:stream_socket_service stream_socket_service::stream_socket_service]
 
- typedef Service service_type;
+Construct a new stream socket service for the specified io_service.
 
+ stream_socket_service(
+ boost::asio::io_service & io_service);
 
 
 
 [endsect]
 
 
-[section:shutdown ssl::stream::shutdown]
 
-Shut down SSL on the stream.
+[endsect]
 
- void ``[link boost_asio.reference.ssl__stream.shutdown.overload1 shutdown]``();
 
- boost::system::error_code ``[link boost_asio.reference.ssl__stream.shutdown.overload2 shutdown]``(
- boost::system::error_code & ec);
+[section:streambuf streambuf]
 
+Typedef for the typical usage of basic_streambuf.
 
-[section:overload1 ssl::stream::shutdown (1 of 2 overloads)]
+ typedef basic_streambuf streambuf;
 
-Shut down SSL on the stream.
 
- void shutdown();
+[heading Types]
+[table
+ [[Name][Description]]
 
+ [
 
-This function is used to shut down SSL on the stream. The function call will block until SSL has been shut down or an error occurs.
+ [[link boost_asio.reference.basic_streambuf.const_buffers_type [*const_buffers_type]]]
+ [The type used to represent the get area as a list of buffers. ]
+
+ ]
 
+ [
 
-[heading Exceptions]
-
+ [[link boost_asio.reference.basic_streambuf.mutable_buffers_type [*mutable_buffers_type]]]
+ [The type used to represent the put area as a list of buffers. ]
+
+ ]
 
-[variablelist
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_streambuf.basic_streambuf [*basic_streambuf]]]
+ [Construct a buffer with a specified maximum size. ]
+ ]
   
-[[boost::system::system_error][Thrown on failure. ]]
+ [
+ [[link boost_asio.reference.basic_streambuf.commit [*commit]]]
+ [Move the start of the put area by the specified number of characters. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_streambuf.consume [*consume]]]
+ [Move the start of the get area by the specified number of characters. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_streambuf.data [*data]]]
+ [Get a list of buffers that represents the get area. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_streambuf.max_size [*max_size]]]
+ [Return the maximum size of the buffer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_streambuf.prepare [*prepare]]]
+ [Get a list of buffers that represents the put area, with the given size. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_streambuf.size [*size]]]
+ [Return the size of the get area in characters. ]
+ ]
+
+]
+
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.basic_streambuf.overflow [*overflow]]]
+ []
+ ]
+
+ [
+ [[link boost_asio.reference.basic_streambuf.reserve [*reserve]]]
+ []
+ ]
+
+ [
+ [[link boost_asio.reference.basic_streambuf.underflow [*underflow]]]
+ []
+ ]
+
 ]
 
 
@@ -36989,121 +44972,126 @@
 [endsect]
 
 
+[section:time_traits_lt__ptime__gt_ time_traits< boost::posix_time::ptime >]
 
-[section:overload2 ssl::stream::shutdown (2 of 2 overloads)]
+Time traits specialised for posix_time.
 
-Shut down SSL on the stream.
+ template<>
+ struct time_traits< boost::posix_time::ptime >
 
- boost::system::error_code shutdown(
- boost::system::error_code & ec);
 
+[heading Types]
+[table
+ [[Name][Description]]
 
-This function is used to shut down SSL on the stream. The function call will block until SSL has been shut down or an error occurs.
+ [
 
+ [[link boost_asio.reference.time_traits_lt__ptime__gt_.duration_type [*duration_type]]]
+ [The duration type. ]
+
+ ]
 
-[heading Parameters]
-
+ [
 
-[variablelist
+ [[link boost_asio.reference.time_traits_lt__ptime__gt_.time_type [*time_type]]]
+ [The time type. ]
   
-[[ec][Set to indicate what error occurred, if any. ]]
+ ]
 
 ]
 
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
-
-[endsect]
+ [
+ [[link boost_asio.reference.time_traits_lt__ptime__gt_.add [*add]]]
+ [Add a duration to a time. ]
+ ]
+
+ [
+ [[link boost_asio.reference.time_traits_lt__ptime__gt_.less_than [*less_than]]]
+ [Test whether one time is less than another. ]
+ ]
+
+ [
+ [[link boost_asio.reference.time_traits_lt__ptime__gt_.now [*now]]]
+ [Get the current time. ]
+ ]
+
+ [
+ [[link boost_asio.reference.time_traits_lt__ptime__gt_.subtract [*subtract]]]
+ [Subtract one time from another. ]
+ ]
+
+ [
+ [[link boost_asio.reference.time_traits_lt__ptime__gt_.to_posix_duration [*to_posix_duration]]]
+ [Convert to POSIX duration type. ]
+ ]
+
+]
 
 
-[endsect]
+[section:add time_traits< boost::posix_time::ptime >::add]
 
+Add a duration to a time.
 
-[section:stream ssl::stream::stream]
+ static time_type add(
+ const time_type & t,
+ const duration_type & d);
 
-Construct a stream.
 
- template<
- typename Arg,
- typename Context_Service>
- stream(
- Arg & arg,
- basic_context< Context_Service > & context);
 
+[endsect]
 
-This constructor creates a stream and initialises the underlying stream object.
 
 
-[heading Parameters]
-
+[section:duration_type time_traits< boost::posix_time::ptime >::duration_type]
 
-[variablelist
-
-[[arg][The argument to be passed to initialise the underlying stream.]]
+The duration type.
 
-[[context][The SSL context to be used for the stream. ]]
+ typedef boost::posix_time::time_duration duration_type;
 
-]
 
 
 
 [endsect]
 
 
-[section:write_some ssl::stream::write_some]
 
-Write some data to the stream.
+[section:less_than time_traits< boost::posix_time::ptime >::less_than]
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t ``[link boost_asio.reference.ssl__stream.write_some.overload1 write_some]``(
- const ConstBufferSequence & buffers);
+Test whether one time is less than another.
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t ``[link boost_asio.reference.ssl__stream.write_some.overload2 write_some]``(
- const ConstBufferSequence & buffers,
- boost::system::error_code & ec);
+ static bool less_than(
+ const time_type & t1,
+ const time_type & t2);
 
 
-[section:overload1 ssl::stream::write_some (1 of 2 overloads)]
 
-Write some data to the stream.
+[endsect]
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t write_some(
- const ConstBufferSequence & buffers);
 
 
-This function is used to write data on the stream. The function call will block until one or more bytes of data has been written successfully, or until an error occurs.
+[section:now time_traits< boost::posix_time::ptime >::now]
 
+Get the current time.
 
-[heading Parameters]
-
+ static time_type now();
 
-[variablelist
-
-[[buffers][The data to be written.]]
 
-]
 
-[heading Return Value]
-
-The number of bytes written.
+[endsect]
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
 
-]
+[section:subtract time_traits< boost::posix_time::ptime >::subtract]
 
-[heading Remarks]
-
-The write\_some operation may not transmit all of the data to the peer. Consider using the
-[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
+Subtract one time from another.
+
+ static duration_type subtract(
+ const time_type & t1,
+ const time_type & t2);
 
 
 
@@ -37111,103 +45099,103 @@
 
 
 
-[section:overload2 ssl::stream::write_some (2 of 2 overloads)]
+[section:time_type time_traits< boost::posix_time::ptime >::time_type]
 
-Write some data to the stream.
+The time type.
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t write_some(
- const ConstBufferSequence & buffers,
- boost::system::error_code & ec);
+ typedef boost::posix_time::ptime time_type;
 
 
-This function is used to write data on the stream. The function call will block until one or more bytes of data has been written successfully, or until an error occurs.
 
 
-[heading Parameters]
-
+[endsect]
 
-[variablelist
-
-[[buffers][The data to be written to the stream.]]
 
-[[ec][Set to indicate what error occurred, if any.]]
 
-]
+[section:to_posix_duration time_traits< boost::posix_time::ptime >::to_posix_duration]
 
-[heading Return Value]
-
-The number of bytes written. Returns 0 if an error occurred.
+Convert to POSIX duration type.
 
-[heading Remarks]
-
-The write\_some operation may not transmit all of the data to the peer. Consider using the
-[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
+ static boost::posix_time::time_duration to_posix_duration(
+ const duration_type & d);
 
 
 
 [endsect]
 
 
+
 [endsect]
 
 
-[section:_stream ssl::stream::~stream]
+[section:transfer_all transfer_all]
 
-Destructor.
+Return a completion condition function object that indicates that a read or write operation should continue until all of the data has been transferred, or until an error occurs.
 
- ~stream();
+ unspecified transfer_all();
 
 
+This function is used to create an object, of unspecified type, that meets CompletionCondition requirements.
 
-[endsect]
+
+[heading Example]
+
+Reading until a buffer is full:
+
+ boost::array<char, 128> buf;
+ boost::system::error_code ec;
+ std::size_t n = boost::asio::read(
+ sock, boost::asio::buffer(buf),
+ boost::asio::transfer_all(), ec);
+ if (ec)
+ {
+ // An error occurred.
+ }
+ else
+ {
+ // n == 128
+ }
 
 
 
-[endsect]
 
-[section:ssl__stream_base ssl::stream_base]
 
-The stream_base class is used as a base for the boost::asio::ssl::stream class template so that we have a common place to define various enums.
 
- class stream_base
+[endsect]
 
 
-[heading Types]
-[table
- [[Name][Description]]
 
- [
+[section:transfer_at_least transfer_at_least]
 
- [[link boost_asio.reference.ssl__stream_base.handshake_type [*handshake_type]]]
- [Different handshake types. ]
-
- ]
+Return a completion condition function object that indicates that a read or write operation should continue until a minimum number of bytes has been transferred, or until an error occurs.
 
-]
+ unspecified transfer_at_least(
+ std::size_t minimum);
 
 
-[section:handshake_type ssl::stream_base::handshake_type]
+This function is used to create an object, of unspecified type, that meets CompletionCondition requirements.
 
-Different handshake types.
 
- enum handshake_type
+[heading Example]
+
+Reading until a buffer is full or contains at least 64 bytes:
 
-[heading Values]
-[variablelist
+ boost::array<char, 128> buf;
+ boost::system::error_code ec;
+ std::size_t n = boost::asio::read(
+ sock, boost::asio::buffer(buf),
+ boost::asio::transfer_at_least(64), ec);
+ if (ec)
+ {
+ // An error occurred.
+ }
+ else
+ {
+ // n >= 64 && n <= 128
+ }
 
- [
- [client]
- [Perform handshaking as a client. ]
- ]
 
- [
- [server]
- [Perform handshaking as a server. ]
- ]
 
-]
 
 
 
@@ -37215,164 +45203,187 @@
 
 
 
-[endsect]
+[section:use_service use_service]
 
-[section:ssl__stream_service ssl::stream_service]
 
-Default service implementation for an SSL stream.
 
- class stream_service :
- public io_service::service
+ template<
+ typename ``[link boost_asio.reference.Service Service]``>
+ Service & use_service(
+ io_service & ios);
 
 
-[heading Types]
-[table
- [[Name][Description]]
+This function is used to locate a service object that corresponds to the given service type. If there is no existing implementation of the service, then the io_service will create a new instance of the service.
 
- [
 
- [[link boost_asio.reference.ssl__stream_service.impl_type [*impl_type]]]
- [The type of a stream implementation. ]
+[heading Parameters]
+
+
+[variablelist
   
- ]
+[[ios][The io\_service object that owns the service.]]
 
 ]
 
-[heading Member Functions]
+[heading Return Value]
+
+The service interface implementing the specified service type. Ownership of the service interface is not transferred to the caller.
+
+
+
+[endsect]
+
+
+[section:windows__basic_handle windows::basic_handle]
+
+Provides Windows handle functionality.
+
+ template<
+ typename ``[link boost_asio.reference.HandleService HandleService]``>
+ class basic_handle :
+ public basic_io_object< HandleService >
+
+
+[heading Types]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.ssl__stream_service.async_handshake [*async_handshake]]]
- [Start an asynchronous SSL handshake. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__stream_service.async_read_some [*async_read_some]]]
- [Start an asynchronous read. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__stream_service.async_shutdown [*async_shutdown]]]
- [Asynchronously shut down SSL on the stream. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__stream_service.async_write_some [*async_write_some]]]
- [Start an asynchronous write. ]
- ]
+
+ [[link boost_asio.reference.windows__basic_handle.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
   
- [
- [[link boost_asio.reference.ssl__stream_service.create [*create]]]
- [Create a new stream implementation. ]
   ]
-
+
   [
- [[link boost_asio.reference.ssl__stream_service.destroy [*destroy]]]
- [Destroy a stream implementation. ]
- ]
+
+ [[link boost_asio.reference.windows__basic_handle.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_handle is always the lowest layer. ]
   
+ ]
+
   [
- [[link boost_asio.reference.ssl__stream_service.get_io_service [*get_io_service]]]
- [Get the io_service object that owns the service. ]
+
+ [[link boost_asio.reference.windows__basic_handle.native_type [*native_type]]]
+ [The native representation of a handle. ]
+
   ]
+
+ [
+
+ [[link boost_asio.reference.windows__basic_handle.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
   
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
   [
- [[link boost_asio.reference.ssl__stream_service.handshake [*handshake]]]
- [Perform SSL handshaking. ]
+ [[link boost_asio.reference.windows__basic_handle.assign [*assign]]]
+ [Assign an existing native handle to the handle. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream_service.in_avail [*in_avail]]]
- [Determine the amount of data that may be read without blocking. ]
+ [[link boost_asio.reference.windows__basic_handle.basic_handle [*basic_handle]]]
+ [Construct a basic_handle without opening it. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream_service.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
+ [[link boost_asio.reference.windows__basic_handle.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the handle. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream_service.null [*null]]]
- [Return a null stream implementation. ]
+ [[link boost_asio.reference.windows__basic_handle.close [*close]]]
+ [Close the handle. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream_service.peek [*peek]]]
- [Peek at the incoming data on the stream. ]
+ [[link boost_asio.reference.windows__basic_handle.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream_service.read_some [*read_some]]]
- [Read some data from the stream. ]
+ [[link boost_asio.reference.windows__basic_handle.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream_service.shutdown [*shutdown]]]
- [Shut down SSL on the stream. ]
+ [[link boost_asio.reference.windows__basic_handle.is_open [*is_open]]]
+ [Determine whether the handle is open. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream_service.shutdown_service [*shutdown_service]]]
- [Destroy all user-defined handler objects owned by the service. ]
+ [[link boost_asio.reference.windows__basic_handle.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream_service.stream_service [*stream_service]]]
- [Construct a new stream service for the specified io_service. ]
+ [[link boost_asio.reference.windows__basic_handle.native [*native]]]
+ [Get the native handle representation. ]
   ]
   
+]
+
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
   [
- [[link boost_asio.reference.ssl__stream_service.write_some [*write_some]]]
- [Write some data to the stream. ]
+ [[link boost_asio.reference.windows__basic_handle._basic_handle [*~basic_handle]]]
+ [Protected destructor to prevent deletion through this type. ]
   ]
   
 ]
 
-[heading Data Members]
+[heading Protected Data Members]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.ssl__stream_service.id [*id]]]
- [The unique service identifier. ]
+ [[link boost_asio.reference.windows__basic_handle.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_handle.service [*service]]]
+ [The service associated with the I/O object. ]
   ]
 
 ]
 
+The windows::basic_handle class template provides the ability to wrap a Windows handle.
 
-[section:async_handshake ssl::stream_service::async_handshake]
 
-Start an asynchronous SSL handshake.
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
 
- template<
- typename Stream,
- typename HandshakeHandler>
- void async_handshake(
- impl_type & impl,
- Stream & next_layer,
- stream_base::handshake_type type,
- HandshakeHandler handler);
+[*Shared] [*objects:] Unsafe.
 
 
+[section:assign windows::basic_handle::assign]
 
-[endsect]
+Assign an existing native handle to the handle.
 
+ void ``[link boost_asio.reference.windows__basic_handle.assign.overload1 assign]``(
+ const native_type & native_handle);
 
+ boost::system::error_code ``[link boost_asio.reference.windows__basic_handle.assign.overload2 assign]``(
+ const native_type & native_handle,
+ boost::system::error_code & ec);
 
-[section:async_read_some ssl::stream_service::async_read_some]
 
-Start an asynchronous read.
+[section:overload1 windows::basic_handle::assign (1 of 2 overloads)]
 
- template<
- typename Stream,
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
- typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_some(
- impl_type & impl,
- Stream & next_layer,
- const MutableBufferSequence & buffers,
- ReadHandler handler);
+Assign an existing native handle to the handle.
+
+ void assign(
+ const native_type & native_handle);
 
 
 
@@ -37380,55 +45391,52 @@
 
 
 
-[section:async_shutdown ssl::stream_service::async_shutdown]
+[section:overload2 windows::basic_handle::assign (2 of 2 overloads)]
 
-Asynchronously shut down SSL on the stream.
+Assign an existing native handle to the handle.
 
- template<
- typename Stream,
- typename ShutdownHandler>
- void async_shutdown(
- impl_type & impl,
- Stream & next_layer,
- ShutdownHandler handler);
+ boost::system::error_code assign(
+ const native_type & native_handle,
+ boost::system::error_code & ec);
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:async_write_some ssl::stream_service::async_write_some]
+[section:basic_handle windows::basic_handle::basic_handle]
 
-Start an asynchronous write.
+Construct a basic_handle without opening it.
 
- template<
- typename Stream,
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
- typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write_some(
- impl_type & impl,
- Stream & next_layer,
- const ConstBufferSequence & buffers,
- WriteHandler handler);
+ ``[link boost_asio.reference.windows__basic_handle.basic_handle.overload1 basic_handle]``(
+ boost::asio::io_service & io_service);
 
+ ``[link boost_asio.reference.windows__basic_handle.basic_handle.overload2 basic_handle]``(
+ boost::asio::io_service & io_service,
+ const native_type & native_handle);
 
 
-[endsect]
+[section:overload1 windows::basic_handle::basic_handle (1 of 2 overloads)]
 
+Construct a basic_handle without opening it.
 
+ basic_handle(
+ boost::asio::io_service & io_service);
 
-[section:create ssl::stream_service::create]
 
-Create a new stream implementation.
+This constructor creates a handle without opening it.
 
- template<
- typename Stream,
- typename Context_Service>
- void create(
- impl_type & impl,
- Stream & next_layer,
- basic_context< Context_Service > & context);
+
+[heading Parameters]
+
+
+[variablelist
+
+[[io_service][The io\_service object that the handle will use to dispatch handlers for any asynchronous operations performed on the handle. ]]
+
+]
 
 
 
@@ -37436,60 +45444,73 @@
 
 
 
-[section:destroy ssl::stream_service::destroy]
+[section:overload2 windows::basic_handle::basic_handle (2 of 2 overloads)]
 
-Destroy a stream implementation.
+Construct a basic_handle on an existing native handle.
 
- template<
- typename Stream>
- void destroy(
- impl_type & impl,
- Stream & next_layer);
+ basic_handle(
+ boost::asio::io_service & io_service,
+ const native_type & native_handle);
 
 
+This constructor creates a handle object to hold an existing native handle.
 
-[endsect]
 
+[heading Parameters]
+
 
+[variablelist
+
+[[io_service][The io\_service object that the handle will use to dispatch handlers for any asynchronous operations performed on the handle.]]
 
-[section:get_io_service ssl::stream_service::get_io_service]
+[[native_handle][A native handle.]]
 
+]
 
-['Inherited from io_service.]
+[heading Exceptions]
+
 
-Get the io_service object that owns the service.
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
- boost::asio::io_service & get_io_service();
+]
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:handshake ssl::stream_service::handshake]
+[section:cancel windows::basic_handle::cancel]
 
-Perform SSL handshaking.
+Cancel all asynchronous operations associated with the handle.
 
- template<
- typename Stream>
- boost::system::error_code handshake(
- impl_type & impl,
- Stream & next_layer,
- stream_base::handshake_type type,
+ void ``[link boost_asio.reference.windows__basic_handle.cancel.overload1 cancel]``();
+
+ boost::system::error_code ``[link boost_asio.reference.windows__basic_handle.cancel.overload2 cancel]``(
       boost::system::error_code & ec);
 
 
+[section:overload1 windows::basic_handle::cancel (1 of 2 overloads)]
 
-[endsect]
+Cancel all asynchronous operations associated with the handle.
 
+ void cancel();
 
 
-[section:id ssl::stream_service::id]
+This function causes all outstanding asynchronous read or write operations to finish immediately, and the handlers for cancelled operations will be passed the boost::asio::error::operation\_aborted error.
 
-The unique service identifier.
 
- static boost::asio::io_service::id id;
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
+
+]
 
 
 
@@ -37497,44 +45518,61 @@
 
 
 
-[section:impl_type ssl::stream_service::impl_type]
+[section:overload2 windows::basic_handle::cancel (2 of 2 overloads)]
 
-The type of a stream implementation.
+Cancel all asynchronous operations associated with the handle.
 
- typedef implementation_defined impl_type;
+ boost::system::error_code cancel(
+ boost::system::error_code & ec);
+
+
+This function causes all outstanding asynchronous read or write operations to finish immediately, and the handlers for cancelled operations will be passed the boost::asio::error::operation\_aborted error.
+
+
+[heading Parameters]
+
 
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any. ]]
+
+]
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:in_avail ssl::stream_service::in_avail]
+[section:close windows::basic_handle::close]
 
-Determine the amount of data that may be read without blocking.
+Close the handle.
 
- template<
- typename Stream>
- std::size_t in_avail(
- impl_type & impl,
- Stream & next_layer,
+ void ``[link boost_asio.reference.windows__basic_handle.close.overload1 close]``();
+
+ boost::system::error_code ``[link boost_asio.reference.windows__basic_handle.close.overload2 close]``(
       boost::system::error_code & ec);
 
 
+[section:overload1 windows::basic_handle::close (1 of 2 overloads)]
 
-[endsect]
+Close the handle.
 
+ void close();
 
 
-[section:io_service ssl::stream_service::io_service]
+This function is used to close the handle. Any asynchronous read or write operations will be cancelled immediately, and will complete with the boost::asio::error::operation\_aborted error.
 
 
-['Inherited from io_service.]
+[heading Exceptions]
+
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
- boost::asio::io_service & io_service();
+]
 
 
 
@@ -37542,49 +45580,50 @@
 
 
 
-[section:null ssl::stream_service::null]
+[section:overload2 windows::basic_handle::close (2 of 2 overloads)]
 
-Return a null stream implementation.
+Close the handle.
 
- impl_type null() const;
+ boost::system::error_code close(
+ boost::system::error_code & ec);
 
 
+This function is used to close the handle. Any asynchronous read or write operations will be cancelled immediately, and will complete with the boost::asio::error::operation\_aborted error.
 
-[endsect]
 
+[heading Parameters]
+
 
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any. ]]
 
-[section:peek ssl::stream_service::peek]
+]
 
-Peek at the incoming data on the stream.
 
- template<
- typename Stream,
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t peek(
- impl_type & impl,
- Stream & next_layer,
- const MutableBufferSequence & buffers,
- boost::system::error_code & ec);
 
+[endsect]
 
 
 [endsect]
 
 
+[section:get_io_service windows::basic_handle::get_io_service]
 
-[section:read_some ssl::stream_service::read_some]
 
-Read some data from the stream.
+['Inherited from basic_io_object.]
+
+Get the io_service associated with the object.
+
+ boost::asio::io_service & get_io_service();
 
- template<
- typename Stream,
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t read_some(
- impl_type & impl,
- Stream & next_layer,
- const MutableBufferSequence & buffers,
- boost::system::error_code & ec);
+
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
+
+
+[heading Return Value]
+
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
 
 
 
@@ -37592,16 +45631,14 @@
 
 
 
-[section:shutdown ssl::stream_service::shutdown]
+[section:implementation windows::basic_handle::implementation]
 
-Shut down SSL on the stream.
 
- template<
- typename Stream>
- boost::system::error_code shutdown(
- impl_type & impl,
- Stream & next_layer,
- boost::system::error_code & ec);
+['Inherited from basic_io_object.]
+
+The underlying implementation of the I/O object.
+
+ implementation_type implementation;
 
 
 
@@ -37609,43 +45646,38 @@
 
 
 
-[section:shutdown_service ssl::stream_service::shutdown_service]
+[section:implementation_type windows::basic_handle::implementation_type]
 
-Destroy all user-defined handler objects owned by the service.
 
- void shutdown_service();
+['Inherited from basic_io_object.]
 
+The underlying implementation type of I/O object.
 
+ typedef service_type::implementation_type implementation_type;
 
-[endsect]
 
 
 
-[section:stream_service ssl::stream_service::stream_service]
+[endsect]
 
-Construct a new stream service for the specified io_service.
 
- stream_service(
- boost::asio::io_service & io_service);
 
+[section:io_service windows::basic_handle::io_service]
 
 
-[endsect]
+['Inherited from basic_io_object.]
 
+(Deprecated: use get_io_service().) Get the io_service associated with the object.
 
+ boost::asio::io_service & io_service();
 
-[section:write_some ssl::stream_service::write_some]
 
-Write some data to the stream.
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
 
- template<
- typename Stream,
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t write_some(
- impl_type & impl,
- Stream & next_layer,
- const ConstBufferSequence & buffers,
- boost::system::error_code & ec);
+
+[heading Return Value]
+
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
 
 
 
@@ -37653,80 +45685,43 @@
 
 
 
-[endsect]
+[section:is_open windows::basic_handle::is_open]
 
+Determine whether the handle is open.
 
-[section:strand strand]
+ bool is_open() const;
 
-Typedef for backwards compatibility.
 
- typedef boost::asio::io_service::strand strand;
 
+[endsect]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.io_service__strand.dispatch [*dispatch]]]
- [Request the strand to invoke the given handler. ]
- ]
-
- [
- [[link boost_asio.reference.io_service__strand.get_io_service [*get_io_service]]]
- [Get the io_service associated with the strand. ]
- ]
-
- [
- [[link boost_asio.reference.io_service__strand.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service associated with the strand. ]
- ]
-
- [
- [[link boost_asio.reference.io_service__strand.post [*post]]]
- [Request the strand to invoke the given handler and return immediately. ]
- ]
-
- [
- [[link boost_asio.reference.io_service__strand.strand [*strand]]]
- [Constructor. ]
- ]
-
- [
- [[link boost_asio.reference.io_service__strand.wrap [*wrap]]]
- [Create a new handler that automatically dispatches the wrapped handler on the strand. ]
- ]
-
- [
- [[link boost_asio.reference.io_service__strand._strand [*~strand]]]
- [Destructor. ]
- ]
-
-]
 
-The io_service::strand class provides the ability to post and dispatch handlers with the guarantee that none of those handlers will execute concurrently.
+[section:lowest_layer windows::basic_handle::lowest_layer]
+
+Get a reference to the lowest layer.
 
+ lowest_layer_type & lowest_layer();
 
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Safe.
+This function returns a reference to the lowest layer in a stack of layers. Since a basic_handle cannot contain any further layers, it simply returns a reference to itself.
 
 
+[heading Return Value]
+
+A reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
+
 
 
 [endsect]
 
 
-[section:stream_socket_service stream_socket_service]
 
-Default service implementation for a stream socket.
+[section:lowest_layer_type windows::basic_handle::lowest_layer_type]
 
- template<
- typename ``[link boost_asio.reference.Protocol Protocol]``>
- class stream_socket_service :
- public io_service::service
+A basic_handle is always the lowest layer.
+
+ typedef basic_handle< HandleService > lowest_layer_type;
 
 
 [heading Types]
@@ -37735,29 +45730,29 @@
 
   [
 
- [[link boost_asio.reference.stream_socket_service.endpoint_type [*endpoint_type]]]
- [The endpoint type. ]
+ [[link boost_asio.reference.windows__basic_handle.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.stream_socket_service.implementation_type [*implementation_type]]]
- [The type of a stream socket implementation. ]
+ [[link boost_asio.reference.windows__basic_handle.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_handle is always the lowest layer. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.stream_socket_service.native_type [*native_type]]]
- [The native socket type. ]
+ [[link boost_asio.reference.windows__basic_handle.native_type [*native_type]]]
+ [The native representation of a handle. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.stream_socket_service.protocol_type [*protocol_type]]]
- [The protocol type. ]
+ [[link boost_asio.reference.windows__basic_handle.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
   
   ]
 
@@ -37768,232 +45763,497 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.stream_socket_service.assign [*assign]]]
- [Assign an existing native socket to a stream socket. ]
+ [[link boost_asio.reference.windows__basic_handle.assign [*assign]]]
+ [Assign an existing native handle to the handle. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.async_connect [*async_connect]]]
- [Start an asynchronous connect. ]
+ [[link boost_asio.reference.windows__basic_handle.basic_handle [*basic_handle]]]
+ [Construct a basic_handle without opening it. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.async_receive [*async_receive]]]
- [Start an asynchronous receive. ]
+ [[link boost_asio.reference.windows__basic_handle.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the handle. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.async_send [*async_send]]]
- [Start an asynchronous send. ]
+ [[link boost_asio.reference.windows__basic_handle.close [*close]]]
+ [Close the handle. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.at_mark [*at_mark]]]
- [Determine whether the socket is at the out-of-band data mark. ]
+ [[link boost_asio.reference.windows__basic_handle.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.available [*available]]]
- [Determine the number of bytes available for reading. ]
+ [[link boost_asio.reference.windows__basic_handle.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.bind [*bind]]]
- [Bind the stream socket to the specified local endpoint. ]
+ [[link boost_asio.reference.windows__basic_handle.is_open [*is_open]]]
+ [Determine whether the handle is open. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.cancel [*cancel]]]
- [Cancel all asynchronous operations associated with the socket. ]
+ [[link boost_asio.reference.windows__basic_handle.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.close [*close]]]
- [Close a stream socket implementation. ]
+ [[link boost_asio.reference.windows__basic_handle.native [*native]]]
+ [Get the native handle representation. ]
   ]
   
+]
+
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
   [
- [[link boost_asio.reference.stream_socket_service.connect [*connect]]]
- [Connect the stream socket to the specified endpoint. ]
+ [[link boost_asio.reference.windows__basic_handle._basic_handle [*~basic_handle]]]
+ [Protected destructor to prevent deletion through this type. ]
   ]
   
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
   [
- [[link boost_asio.reference.stream_socket_service.construct [*construct]]]
- [Construct a new stream socket implementation. ]
+ [[link boost_asio.reference.windows__basic_handle.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
   ]
-
+
   [
- [[link boost_asio.reference.stream_socket_service.destroy [*destroy]]]
- [Destroy a stream socket implementation. ]
+ [[link boost_asio.reference.windows__basic_handle.service [*service]]]
+ [The service associated with the I/O object. ]
   ]
+
+]
+
+The windows::basic_handle class template provides the ability to wrap a Windows handle.
+
+
+[heading Thread Safety]
   
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+
+
+
+[endsect]
+
+
+
+[section:native windows::basic_handle::native]
+
+Get the native handle representation.
+
+ native_type native();
+
+
+This function may be used to obtain the underlying representation of the handle. This is intended to allow access to native handle functionality that is not otherwise provided.
+
+
+[endsect]
+
+
+
+[section:native_type windows::basic_handle::native_type]
+
+The native representation of a handle.
+
+ typedef HandleService::native_type native_type;
+
+
+
+
+[endsect]
+
+
+
+[section:service windows::basic_handle::service]
+
+
+['Inherited from basic_io_object.]
+
+The service associated with the I/O object.
+
+ service_type & service;
+
+
+
+[endsect]
+
+
+
+[section:service_type windows::basic_handle::service_type]
+
+
+['Inherited from basic_io_object.]
+
+The type of the service that will be used to provide I/O operations.
+
+ typedef HandleService service_type;
+
+
+
+
+[endsect]
+
+
+
+[section:_basic_handle windows::basic_handle::~basic_handle]
+
+Protected destructor to prevent deletion through this type.
+
+ ~basic_handle();
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:windows__basic_stream_handle windows::basic_stream_handle]
+
+Provides stream-oriented handle functionality.
+
+ template<
+ typename ``[link boost_asio.reference.StreamHandleService StreamHandleService]`` = stream_handle_service>
+ class basic_stream_handle :
+ public windows::basic_handle< StreamHandleService >
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
   [
- [[link boost_asio.reference.stream_socket_service.get_io_service [*get_io_service]]]
- [Get the io_service object that owns the service. ]
+
+ [[link boost_asio.reference.windows__basic_stream_handle.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
   ]
+
+ [
+
+ [[link boost_asio.reference.windows__basic_stream_handle.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_handle is always the lowest layer. ]
   
+ ]
+
   [
- [[link boost_asio.reference.stream_socket_service.get_option [*get_option]]]
- [Get a socket option. ]
+
+ [[link boost_asio.reference.windows__basic_stream_handle.native_type [*native_type]]]
+ [The native representation of a handle. ]
+
   ]
+
+ [
+
+ [[link boost_asio.reference.windows__basic_stream_handle.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
   
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
   [
- [[link boost_asio.reference.stream_socket_service.io_control [*io_control]]]
- [Perform an IO control command on the socket. ]
+ [[link boost_asio.reference.windows__basic_stream_handle.assign [*assign]]]
+ [Assign an existing native handle to the handle. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
+ [[link boost_asio.reference.windows__basic_stream_handle.async_read_some [*async_read_some]]]
+ [Start an asynchronous read. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.is_open [*is_open]]]
- [Determine whether the socket is open. ]
+ [[link boost_asio.reference.windows__basic_stream_handle.async_write_some [*async_write_some]]]
+ [Start an asynchronous write. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.local_endpoint [*local_endpoint]]]
- [Get the local endpoint. ]
+ [[link boost_asio.reference.windows__basic_stream_handle.basic_stream_handle [*basic_stream_handle]]]
+ [Construct a basic_stream_handle without opening it. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.native [*native]]]
- [Get the native socket implementation. ]
+ [[link boost_asio.reference.windows__basic_stream_handle.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the handle. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.open [*open]]]
- [Open a stream socket. ]
+ [[link boost_asio.reference.windows__basic_stream_handle.close [*close]]]
+ [Close the handle. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.receive [*receive]]]
- [Receive some data from the peer. ]
+ [[link boost_asio.reference.windows__basic_stream_handle.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.remote_endpoint [*remote_endpoint]]]
- [Get the remote endpoint. ]
+ [[link boost_asio.reference.windows__basic_stream_handle.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.send [*send]]]
- [Send the given data to the peer. ]
+ [[link boost_asio.reference.windows__basic_stream_handle.is_open [*is_open]]]
+ [Determine whether the handle is open. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.set_option [*set_option]]]
- [Set a socket option. ]
+ [[link boost_asio.reference.windows__basic_stream_handle.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.shutdown [*shutdown]]]
- [Disable sends or receives on the socket. ]
+ [[link boost_asio.reference.windows__basic_stream_handle.native [*native]]]
+ [Get the native handle representation. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.shutdown_service [*shutdown_service]]]
- [Destroy all user-defined handler objects owned by the service. ]
+ [[link boost_asio.reference.windows__basic_stream_handle.read_some [*read_some]]]
+ [Read some data from the handle. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.stream_socket_service [*stream_socket_service]]]
- [Construct a new stream socket service for the specified io_service. ]
+ [[link boost_asio.reference.windows__basic_stream_handle.write_some [*write_some]]]
+ [Write some data to the handle. ]
   ]
   
 ]
 
-[heading Data Members]
+[heading Protected Data Members]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.stream_socket_service.id [*id]]]
- [The unique service identifier. ]
+ [[link boost_asio.reference.windows__basic_stream_handle.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_stream_handle.service [*service]]]
+ [The service associated with the I/O object. ]
   ]
 
 ]
 
+The windows::basic_stream_handle class template provides asynchronous and blocking stream-oriented handle functionality.
 
-[section:assign stream_socket_service::assign]
 
-Assign an existing native socket to a stream socket.
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
 
- boost::system::error_code assign(
- implementation_type & impl,
- const protocol_type & protocol,
- const native_type & native_socket,
+[*Shared] [*objects:] Unsafe.
+
+
+[section:assign windows::basic_stream_handle::assign]
+
+Assign an existing native handle to the handle.
+
+ void ``[link boost_asio.reference.windows__basic_stream_handle.assign.overload1 assign]``(
+ const native_type & native_handle);
+
+ boost::system::error_code ``[link boost_asio.reference.windows__basic_stream_handle.assign.overload2 assign]``(
+ const native_type & native_handle,
       boost::system::error_code & ec);
 
 
+[section:overload1 windows::basic_stream_handle::assign (1 of 2 overloads)]
+
+
+['Inherited from windows::basic_handle.]
+
+Assign an existing native handle to the handle.
+
+ void assign(
+ const native_type & native_handle);
+
+
 
 [endsect]
 
 
 
-[section:async_connect stream_socket_service::async_connect]
+[section:overload2 windows::basic_stream_handle::assign (2 of 2 overloads)]
 
-Start an asynchronous connect.
 
- template<
- typename ``[link boost_asio.reference.ConnectHandler ConnectHandler]``>
- void async_connect(
- implementation_type & impl,
- const endpoint_type & peer_endpoint,
- ConnectHandler handler);
+['Inherited from windows::basic_handle.]
+
+Assign an existing native handle to the handle.
+
+ boost::system::error_code assign(
+ const native_type & native_handle,
+ boost::system::error_code & ec);
 
 
 
 [endsect]
 
 
+[endsect]
+
 
-[section:async_receive stream_socket_service::async_receive]
+[section:async_read_some windows::basic_stream_handle::async_read_some]
 
-Start an asynchronous receive.
+Start an asynchronous read.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_receive(
- implementation_type & impl,
+ void async_read_some(
       const MutableBufferSequence & buffers,
- socket_base::message_flags flags,
       ReadHandler handler);
 
 
+This function is used to asynchronously read data from the stream handle. The function call always returns immediately.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[buffers][One or more buffers into which the data will be read. Although the buffers object may be copied as necessary, ownership of the underlying memory blocks is retained by the caller, which must guarantee that they remain valid until the handler is called.]]
+
+[[handler][The handler to be called when the read operation completes. Copies will be made of the handler as required. The function signature of the handler must be:
+``
+ void handler(
+ const boost::system::error_code& error, // Result of operation.
+ std::size_t bytes_transferred // Number of bytes read.
+ );
+
+``
+Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
+
+]
+
+[heading Remarks]
+
+The read operation may not read all of the requested number of bytes. Consider using the
+[link boost_asio.reference.async_read async_read] function if you need to ensure that the requested amount of data is read before the asynchronous operation completes.
+
+[heading Example]
+
+To read into a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
+
+ handle.async_read_some(boost::asio::buffer(data, size), handler);
+
+
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+
+
 
 [endsect]
 
 
 
-[section:async_send stream_socket_service::async_send]
+[section:async_write_some windows::basic_stream_handle::async_write_some]
 
-Start an asynchronous send.
+Start an asynchronous write.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_send(
- implementation_type & impl,
+ void async_write_some(
       const ConstBufferSequence & buffers,
- socket_base::message_flags flags,
       WriteHandler handler);
 
 
+This function is used to asynchronously write data to the stream handle. The function call always returns immediately.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[buffers][One or more data buffers to be written to the handle. Although the buffers object may be copied as necessary, ownership of the underlying memory blocks is retained by the caller, which must guarantee that they remain valid until the handler is called.]]
+
+[[handler][The handler to be called when the write operation completes. Copies will be made of the handler as required. The function signature of the handler must be:
+``
+ void handler(
+ const boost::system::error_code& error, // Result of operation.
+ std::size_t bytes_transferred // Number of bytes written.
+ );
+
+``
+Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
+
+]
+
+[heading Remarks]
+
+The write operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.async_write async_write] function if you need to ensure that all data is written before the asynchronous operation completes.
+
+[heading Example]
+
+To write a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
+
+ handle.async_write_some(boost::asio::buffer(data, size), handler);
+
+
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on writing multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+
+
 
 [endsect]
 
 
+[section:basic_stream_handle windows::basic_stream_handle::basic_stream_handle]
 
-[section:at_mark stream_socket_service::at_mark]
+Construct a basic_stream_handle without opening it.
 
-Determine whether the socket is at the out-of-band data mark.
+ ``[link boost_asio.reference.windows__basic_stream_handle.basic_stream_handle.overload1 basic_stream_handle]``(
+ boost::asio::io_service & io_service);
+
+ ``[link boost_asio.reference.windows__basic_stream_handle.basic_stream_handle.overload2 basic_stream_handle]``(
+ boost::asio::io_service & io_service,
+ const native_type & native_handle);
 
- bool at_mark(
- const implementation_type & impl,
- boost::system::error_code & ec) const;
+
+[section:overload1 windows::basic_stream_handle::basic_stream_handle (1 of 2 overloads)]
+
+Construct a basic_stream_handle without opening it.
+
+ basic_stream_handle(
+ boost::asio::io_service & io_service);
+
+
+This constructor creates a stream handle without opening it. The handle needs to be opened and then connected or accepted before data can be sent or received on it.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[io_service][The io\_service object that the stream handle will use to dispatch handlers for any asynchronous operations performed on the handle. ]]
+
+]
 
 
 
@@ -38001,97 +46261,198 @@
 
 
 
-[section:available stream_socket_service::available]
+[section:overload2 windows::basic_stream_handle::basic_stream_handle (2 of 2 overloads)]
 
-Determine the number of bytes available for reading.
+Construct a basic_stream_handle on an existing native handle.
 
- std::size_t available(
- const implementation_type & impl,
- boost::system::error_code & ec) const;
+ basic_stream_handle(
+ boost::asio::io_service & io_service,
+ const native_type & native_handle);
+
+
+This constructor creates a stream handle object to hold an existing native handle.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[io_service][The io\_service object that the stream handle will use to dispatch handlers for any asynchronous operations performed on the handle.]]
+
+[[native_handle][The new underlying handle implementation.]]
+
+]
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
+
+]
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:bind stream_socket_service::bind]
+[section:cancel windows::basic_stream_handle::cancel]
 
-Bind the stream socket to the specified local endpoint.
+Cancel all asynchronous operations associated with the handle.
 
- boost::system::error_code bind(
- implementation_type & impl,
- const endpoint_type & endpoint,
+ void ``[link boost_asio.reference.windows__basic_stream_handle.cancel.overload1 cancel]``();
+
+ boost::system::error_code ``[link boost_asio.reference.windows__basic_stream_handle.cancel.overload2 cancel]``(
       boost::system::error_code & ec);
 
 
+[section:overload1 windows::basic_stream_handle::cancel (1 of 2 overloads)]
+
+
+['Inherited from windows::basic_handle.]
+
+Cancel all asynchronous operations associated with the handle.
+
+ void cancel();
+
+
+This function causes all outstanding asynchronous read or write operations to finish immediately, and the handlers for cancelled operations will be passed the boost::asio::error::operation\_aborted error.
+
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
+
+]
+
+
 
 [endsect]
 
 
 
-[section:cancel stream_socket_service::cancel]
+[section:overload2 windows::basic_stream_handle::cancel (2 of 2 overloads)]
 
-Cancel all asynchronous operations associated with the socket.
+
+['Inherited from windows::basic_handle.]
+
+Cancel all asynchronous operations associated with the handle.
 
   boost::system::error_code cancel(
- implementation_type & impl,
       boost::system::error_code & ec);
 
 
+This function causes all outstanding asynchronous read or write operations to finish immediately, and the handlers for cancelled operations will be passed the boost::asio::error::operation\_aborted error.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any. ]]
+
+]
+
+
 
 [endsect]
 
 
+[endsect]
 
-[section:close stream_socket_service::close]
+[section:close windows::basic_stream_handle::close]
 
-Close a stream socket implementation.
+Close the handle.
 
- boost::system::error_code close(
- implementation_type & impl,
+ void ``[link boost_asio.reference.windows__basic_stream_handle.close.overload1 close]``();
+
+ boost::system::error_code ``[link boost_asio.reference.windows__basic_stream_handle.close.overload2 close]``(
       boost::system::error_code & ec);
 
 
+[section:overload1 windows::basic_stream_handle::close (1 of 2 overloads)]
+
+
+['Inherited from windows::basic_handle.]
+
+Close the handle.
+
+ void close();
+
+
+This function is used to close the handle. Any asynchronous read or write operations will be cancelled immediately, and will complete with the boost::asio::error::operation\_aborted error.
+
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
+
+]
+
+
 
 [endsect]
 
 
 
-[section:connect stream_socket_service::connect]
+[section:overload2 windows::basic_stream_handle::close (2 of 2 overloads)]
 
-Connect the stream socket to the specified endpoint.
 
- boost::system::error_code connect(
- implementation_type & impl,
- const endpoint_type & peer_endpoint,
+['Inherited from windows::basic_handle.]
+
+Close the handle.
+
+ boost::system::error_code close(
       boost::system::error_code & ec);
 
 
+This function is used to close the handle. Any asynchronous read or write operations will be cancelled immediately, and will complete with the boost::asio::error::operation\_aborted error.
 
-[endsect]
 
+[heading Parameters]
+
 
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any. ]]
 
-[section:construct stream_socket_service::construct]
+]
 
-Construct a new stream socket implementation.
 
- void construct(
- implementation_type & impl);
 
+[endsect]
 
 
 [endsect]
 
 
+[section:get_io_service windows::basic_stream_handle::get_io_service]
 
-[section:destroy stream_socket_service::destroy]
 
-Destroy a stream socket implementation.
+['Inherited from basic_io_object.]
 
- void destroy(
- implementation_type & impl);
+Get the io_service associated with the object.
+
+ boost::asio::io_service & get_io_service();
+
+
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
+
+
+[heading Return Value]
+
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
 
 
 
@@ -38099,12 +46460,14 @@
 
 
 
-[section:endpoint_type stream_socket_service::endpoint_type]
+[section:implementation windows::basic_stream_handle::implementation]
 
-The endpoint type.
 
- typedef Protocol::endpoint endpoint_type;
+['Inherited from basic_io_object.]
 
+The underlying implementation of the I/O object.
+
+ implementation_type implementation;
 
 
 
@@ -38112,14 +46475,15 @@
 
 
 
-[section:get_io_service stream_socket_service::get_io_service]
+[section:implementation_type windows::basic_stream_handle::implementation_type]
 
 
-['Inherited from io_service.]
+['Inherited from basic_io_object.]
 
-Get the io_service object that owns the service.
+The underlying implementation type of I/O object.
+
+ typedef service_type::implementation_type implementation_type;
 
- boost::asio::io_service & get_io_service();
 
 
 
@@ -38127,16 +46491,22 @@
 
 
 
-[section:get_option stream_socket_service::get_option]
+[section:io_service windows::basic_stream_handle::io_service]
 
-Get a socket option.
 
- template<
- typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
- boost::system::error_code get_option(
- const implementation_type & impl,
- GettableSocketOption & option,
- boost::system::error_code & ec) const;
+['Inherited from basic_io_object.]
+
+(Deprecated: use get_io_service().) Get the io_service associated with the object.
+
+ boost::asio::io_service & io_service();
+
+
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
+
+
+[heading Return Value]
+
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
 
 
 
@@ -38144,11 +46514,14 @@
 
 
 
-[section:id stream_socket_service::id]
+[section:is_open windows::basic_stream_handle::is_open]
 
-The unique service identifier.
 
- static boost::asio::io_service::id id;
+['Inherited from windows::basic_handle.]
+
+Determine whether the handle is open.
+
+ bool is_open() const;
 
 
 
@@ -38156,12 +46529,22 @@
 
 
 
-[section:implementation_type stream_socket_service::implementation_type]
+[section:lowest_layer windows::basic_stream_handle::lowest_layer]
 
-The type of a stream socket implementation.
 
- typedef implementation_defined implementation_type;
+['Inherited from windows::basic_handle.]
+
+Get a reference to the lowest layer.
+
+ lowest_layer_type & lowest_layer();
+
+
+This function returns a reference to the lowest layer in a stack of layers. Since a basic_handle cannot contain any further layers, it simply returns a reference to itself.
+
 
+[heading Return Value]
+
+A reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
 
 
 
@@ -38169,16 +46552,137 @@
 
 
 
-[section:io_control stream_socket_service::io_control]
+[section:lowest_layer_type windows::basic_stream_handle::lowest_layer_type]
 
-Perform an IO control command on the socket.
 
- template<
- typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
- boost::system::error_code io_control(
- implementation_type & impl,
- IoControlCommand & command,
- boost::system::error_code & ec);
+['Inherited from windows::basic_handle.]
+
+A basic_handle is always the lowest layer.
+
+ typedef basic_handle< StreamHandleService > lowest_layer_type;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.windows__basic_handle.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.windows__basic_handle.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_handle is always the lowest layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.windows__basic_handle.native_type [*native_type]]]
+ [The native representation of a handle. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.windows__basic_handle.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.windows__basic_handle.assign [*assign]]]
+ [Assign an existing native handle to the handle. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_handle.basic_handle [*basic_handle]]]
+ [Construct a basic_handle without opening it. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_handle.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the handle. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_handle.close [*close]]]
+ [Close the handle. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_handle.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_handle.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_handle.is_open [*is_open]]]
+ [Determine whether the handle is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_handle.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_handle.native [*native]]]
+ [Get the native handle representation. ]
+ ]
+
+]
+
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.windows__basic_handle._basic_handle [*~basic_handle]]]
+ [Protected destructor to prevent deletion through this type. ]
+ ]
+
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.windows__basic_handle.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_handle.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
+The windows::basic_handle class template provides the ability to wrap a Windows handle.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
 
 
 
@@ -38186,54 +46690,101 @@
 
 
 
-[section:io_service stream_socket_service::io_service]
+[section:native windows::basic_stream_handle::native]
 
 
-['Inherited from io_service.]
+['Inherited from windows::basic_handle.]
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+Get the native handle representation.
+
+ native_type native();
 
- boost::asio::io_service & io_service();
 
+This function may be used to obtain the underlying representation of the handle. This is intended to allow access to native handle functionality that is not otherwise provided.
 
 
 [endsect]
 
 
 
-[section:is_open stream_socket_service::is_open]
+[section:native_type windows::basic_stream_handle::native_type]
 
-Determine whether the socket is open.
+The native representation of a handle.
 
- bool is_open(
- const implementation_type & impl) const;
+ typedef StreamHandleService::native_type native_type;
+
+
+
+
+[endsect]
+
+
+[section:read_some windows::basic_stream_handle::read_some]
+
+Read some data from the handle.
 
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.windows__basic_stream_handle.read_some.overload1 read_some]``(
+ const MutableBufferSequence & buffers);
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.windows__basic_stream_handle.read_some.overload2 read_some]``(
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
+
+
+[section:overload1 windows::basic_stream_handle::read_some (1 of 2 overloads)]
+
+Read some data from the handle.
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some(
+ const MutableBufferSequence & buffers);
 
 
-[endsect]
+This function is used to read data from the stream handle. The function call will block until one or more bytes of data has been read successfully, or until an error occurs.
 
 
+[heading Parameters]
+
 
-[section:local_endpoint stream_socket_service::local_endpoint]
+[variablelist
+
+[[buffers][One or more buffers into which the data will be read.]]
 
-Get the local endpoint.
+]
 
- endpoint_type local_endpoint(
- const implementation_type & impl,
- boost::system::error_code & ec) const;
+[heading Return Value]
+
+The number of bytes read.
 
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. An error code of boost::asio::error::eof indicates that the connection was closed by the peer.]]
 
-[endsect]
+]
 
+[heading Remarks]
+
+The read\_some operation may not read all of the requested number of bytes. Consider using the
+[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
 
+[heading Example]
+
+To read into a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
 
-[section:native stream_socket_service::native]
+ handle.read_some(boost::asio::buffer(data, size));
 
-Get the native socket implementation.
 
- native_type native(
- implementation_type & impl);
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
 
 
@@ -38241,122 +46792,144 @@
 
 
 
-[section:native_type stream_socket_service::native_type]
+[section:overload2 windows::basic_stream_handle::read_some (2 of 2 overloads)]
 
-The native socket type.
+Read some data from the handle.
 
- typedef implementation_defined native_type;
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some(
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
 
 
+This function is used to read data from the stream handle. The function call will block until one or more bytes of data has been read successfully, or until an error occurs.
 
 
-[endsect]
+[heading Parameters]
+
 
+[variablelist
+
+[[buffers][One or more buffers into which the data will be read.]]
 
+[[ec][Set to indicate what error occurred, if any.]]
 
-[section:open stream_socket_service::open]
+]
 
-Open a stream socket.
+[heading Return Value]
+
+The number of bytes read. Returns 0 if an error occurred.
 
- boost::system::error_code open(
- implementation_type & impl,
- const protocol_type & protocol,
- boost::system::error_code & ec);
+[heading Remarks]
+
+The read\_some operation may not read all of the requested number of bytes. Consider using the
+[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
 
 
 
 [endsect]
 
 
-
-[section:protocol_type stream_socket_service::protocol_type]
-
-The protocol type.
-
- typedef Protocol protocol_type;
+[endsect]
 
 
+[section:service windows::basic_stream_handle::service]
 
 
-[endsect]
+['Inherited from basic_io_object.]
 
+The service associated with the I/O object.
 
+ service_type & service;
 
-[section:receive stream_socket_service::receive]
 
-Receive some data from the peer.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t receive(
- implementation_type & impl,
- const MutableBufferSequence & buffers,
- socket_base::message_flags flags,
- boost::system::error_code & ec);
+[endsect]
 
 
 
-[endsect]
+[section:service_type windows::basic_stream_handle::service_type]
 
 
+['Inherited from basic_io_object.]
 
-[section:remote_endpoint stream_socket_service::remote_endpoint]
+The type of the service that will be used to provide I/O operations.
 
-Get the remote endpoint.
+ typedef StreamHandleService service_type;
 
- endpoint_type remote_endpoint(
- const implementation_type & impl,
- boost::system::error_code & ec) const;
 
 
 
 [endsect]
 
 
+[section:write_some windows::basic_stream_handle::write_some]
 
-[section:send stream_socket_service::send]
+Write some data to the handle.
 
-Send the given data to the peer.
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.windows__basic_stream_handle.write_some.overload1 write_some]``(
+ const ConstBufferSequence & buffers);
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t send(
- implementation_type & impl,
+ std::size_t ``[link boost_asio.reference.windows__basic_stream_handle.write_some.overload2 write_some]``(
       const ConstBufferSequence & buffers,
- socket_base::message_flags flags,
       boost::system::error_code & ec);
 
 
+[section:overload1 windows::basic_stream_handle::write_some (1 of 2 overloads)]
 
-[endsect]
+Write some data to the handle.
 
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some(
+ const ConstBufferSequence & buffers);
 
 
-[section:set_option stream_socket_service::set_option]
+This function is used to write data to the stream handle. The function call will block until one or more bytes of the data has been written successfully, or until an error occurs.
 
-Set a socket option.
 
- template<
- typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
- boost::system::error_code set_option(
- implementation_type & impl,
- const SettableSocketOption & option,
- boost::system::error_code & ec);
+[heading Parameters]
+
 
+[variablelist
+
+[[buffers][One or more data buffers to be written to the handle.]]
 
+]
 
-[endsect]
+[heading Return Value]
+
+The number of bytes written.
 
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. An error code of boost::asio::error::eof indicates that the connection was closed by the peer.]]
 
-[section:shutdown stream_socket_service::shutdown]
+]
 
-Disable sends or receives on the socket.
+[heading Remarks]
+
+The write\_some operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
+
+[heading Example]
+
+To write a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
+
+ handle.write_some(boost::asio::buffer(data, size));
 
- boost::system::error_code shutdown(
- implementation_type & impl,
- socket_base::shutdown_type what,
- boost::system::error_code & ec);
+
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on writing multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
 
 
@@ -38364,39 +46937,56 @@
 
 
 
-[section:shutdown_service stream_socket_service::shutdown_service]
+[section:overload2 windows::basic_stream_handle::write_some (2 of 2 overloads)]
 
-Destroy all user-defined handler objects owned by the service.
+Write some data to the handle.
 
- void shutdown_service();
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some(
+ const ConstBufferSequence & buffers,
+ boost::system::error_code & ec);
 
 
+This function is used to write data to the stream handle. The function call will block until one or more bytes of the data has been written successfully, or until an error occurs.
 
-[endsect]
 
+[heading Parameters]
+
+
+[variablelist
+
+[[buffers][One or more data buffers to be written to the handle.]]
 
+[[ec][Set to indicate what error occurred, if any.]]
 
-[section:stream_socket_service stream_socket_service::stream_socket_service]
+]
 
-Construct a new stream socket service for the specified io_service.
+[heading Return Value]
+
+The number of bytes written. Returns 0 if an error occurred.
 
- stream_socket_service(
- boost::asio::io_service & io_service);
+[heading Remarks]
+
+The write\_some operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
 
 
 
 [endsect]
 
 
+[endsect]
+
 
 [endsect]
 
 
-[section:streambuf streambuf]
+[section:windows__stream_handle windows::stream_handle]
 
-Typedef for the typical usage of basic_streambuf.
+Typedef for the typical usage of a stream-oriented handle.
 
- typedef basic_streambuf streambuf;
+ typedef basic_stream_handle stream_handle;
 
 
 [heading Types]
@@ -38405,15 +46995,29 @@
 
   [
 
- [[link boost_asio.reference.basic_streambuf.const_buffers_type [*const_buffers_type]]]
- [The type used to represent the get area as a list of buffers. ]
+ [[link boost_asio.reference.windows__basic_stream_handle.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_streambuf.mutable_buffers_type [*mutable_buffers_type]]]
- [The type used to represent the put area as a list of buffers. ]
+ [[link boost_asio.reference.windows__basic_stream_handle.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_handle is always the lowest layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.windows__basic_stream_handle.native_type [*native_type]]]
+ [The native representation of a handle. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.windows__basic_stream_handle.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
   
   ]
 
@@ -38424,53 +47028,109 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.basic_streambuf.basic_streambuf [*basic_streambuf]]]
- [Construct a buffer with a specified maximum size. ]
+ [[link boost_asio.reference.windows__basic_stream_handle.assign [*assign]]]
+ [Assign an existing native handle to the handle. ]
   ]
   
   [
- [[link boost_asio.reference.basic_streambuf.commit [*commit]]]
- [Move the start of the put area by the specified number of characters. ]
+ [[link boost_asio.reference.windows__basic_stream_handle.async_read_some [*async_read_some]]]
+ [Start an asynchronous read. ]
   ]
   
   [
- [[link boost_asio.reference.basic_streambuf.consume [*consume]]]
- [Move the start of the get area by the specified number of characters. ]
+ [[link boost_asio.reference.windows__basic_stream_handle.async_write_some [*async_write_some]]]
+ [Start an asynchronous write. ]
   ]
   
   [
- [[link boost_asio.reference.basic_streambuf.data [*data]]]
- [Get a list of buffers that represents the get area. ]
+ [[link boost_asio.reference.windows__basic_stream_handle.basic_stream_handle [*basic_stream_handle]]]
+ [Construct a basic_stream_handle without opening it. ]
   ]
   
   [
- [[link boost_asio.reference.basic_streambuf.max_size [*max_size]]]
- [Return the maximum size of the buffer. ]
+ [[link boost_asio.reference.windows__basic_stream_handle.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the handle. ]
   ]
   
   [
- [[link boost_asio.reference.basic_streambuf.prepare [*prepare]]]
- [Get a list of buffers that represents the put area, with the given size. ]
+ [[link boost_asio.reference.windows__basic_stream_handle.close [*close]]]
+ [Close the handle. ]
   ]
   
   [
- [[link boost_asio.reference.basic_streambuf.size [*size]]]
- [Return the size of the get area in characters. ]
+ [[link boost_asio.reference.windows__basic_stream_handle.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_stream_handle.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_stream_handle.is_open [*is_open]]]
+ [Determine whether the handle is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_stream_handle.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_stream_handle.native [*native]]]
+ [Get the native handle representation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_stream_handle.read_some [*read_some]]]
+ [Read some data from the handle. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_stream_handle.write_some [*write_some]]]
+ [Write some data to the handle. ]
   ]
   
 ]
 
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.windows__basic_stream_handle.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_stream_handle.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
+The windows::basic_stream_handle class template provides asynchronous and blocking stream-oriented handle functionality.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+
 
 
 [endsect]
 
 
-[section:time_traits_lt__ptime__gt_ time_traits< boost::posix_time::ptime >]
+[section:windows__stream_handle_service windows::stream_handle_service]
 
-Time traits specialised for posix_time.
+Default service implementation for a stream handle.
 
- template<>
- struct time_traits< boost::posix_time::ptime >
+ class stream_handle_service :
+ public io_service::service
 
 
 [heading Types]
@@ -38479,15 +47139,15 @@
 
   [
 
- [[link boost_asio.reference.time_traits_lt__ptime__gt_.duration_type [*duration_type]]]
- [The duration type. ]
+ [[link boost_asio.reference.windows__stream_handle_service.implementation_type [*implementation_type]]]
+ [The type of a stream handle implementation. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.time_traits_lt__ptime__gt_.time_type [*time_type]]]
- [The time type. ]
+ [[link boost_asio.reference.windows__stream_handle_service.native_type [*native_type]]]
+ [The native handle type. ]
   
   ]
 
@@ -38498,53 +47158,120 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.time_traits_lt__ptime__gt_.add [*add]]]
- [Add a duration to a time. ]
+ [[link boost_asio.reference.windows__stream_handle_service.assign [*assign]]]
+ [Assign an existing native handle to a stream handle. ]
   ]
   
   [
- [[link boost_asio.reference.time_traits_lt__ptime__gt_.less_than [*less_than]]]
- [Test whether one time is less than another. ]
+ [[link boost_asio.reference.windows__stream_handle_service.async_read_some [*async_read_some]]]
+ [Start an asynchronous read. ]
   ]
   
   [
- [[link boost_asio.reference.time_traits_lt__ptime__gt_.now [*now]]]
- [Get the current time. ]
+ [[link boost_asio.reference.windows__stream_handle_service.async_write_some [*async_write_some]]]
+ [Start an asynchronous write. ]
   ]
   
   [
- [[link boost_asio.reference.time_traits_lt__ptime__gt_.subtract [*subtract]]]
- [Subtract one time from another. ]
+ [[link boost_asio.reference.windows__stream_handle_service.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the handle. ]
   ]
   
   [
- [[link boost_asio.reference.time_traits_lt__ptime__gt_.to_posix_duration [*to_posix_duration]]]
- [Convert to POSIX duration type. ]
+ [[link boost_asio.reference.windows__stream_handle_service.close [*close]]]
+ [Close a stream handle implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__stream_handle_service.construct [*construct]]]
+ [Construct a new stream handle implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__stream_handle_service.destroy [*destroy]]]
+ [Destroy a stream handle implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__stream_handle_service.get_io_service [*get_io_service]]]
+ [Get the io_service object that owns the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__stream_handle_service.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__stream_handle_service.is_open [*is_open]]]
+ [Determine whether the handle is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__stream_handle_service.native [*native]]]
+ [Get the native handle implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__stream_handle_service.read_some [*read_some]]]
+ [Read some data from the stream. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__stream_handle_service.shutdown_service [*shutdown_service]]]
+ [Destroy all user-defined handler objects owned by the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__stream_handle_service.stream_handle_service [*stream_handle_service]]]
+ [Construct a new stream handle service for the specified io_service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__stream_handle_service.write_some [*write_some]]]
+ [Write the given data to the stream. ]
   ]
   
 ]
 
+[heading Data Members]
+[table
+ [[Name][Description]]
 
-[section:add time_traits< boost::posix_time::ptime >::add]
+ [
+ [[link boost_asio.reference.windows__stream_handle_service.id [*id]]]
+ [The unique service identifier. ]
+ ]
 
-Add a duration to a time.
+]
 
- static time_type add(
- const time_type & t,
- const duration_type & d);
 
+[section:assign windows::stream_handle_service::assign]
 
+Assign an existing native handle to a stream handle.
 
-[endsect]
+ boost::system::error_code assign(
+ implementation_type & impl,
+ const native_type & native_handle,
+ boost::system::error_code & ec);
 
 
 
-[section:duration_type time_traits< boost::posix_time::ptime >::duration_type]
+[endsect]
 
-The duration type.
 
- typedef boost::posix_time::time_duration duration_type;
 
+[section:async_read_some windows::stream_handle_service::async_read_some]
+
+Start an asynchronous read.
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_read_some(
+ implementation_type & impl,
+ const MutableBufferSequence & buffers,
+ ReadHandler handler);
 
 
 
@@ -38552,13 +47279,17 @@
 
 
 
-[section:less_than time_traits< boost::posix_time::ptime >::less_than]
+[section:async_write_some windows::stream_handle_service::async_write_some]
 
-Test whether one time is less than another.
+Start an asynchronous write.
 
- static bool less_than(
- const time_type & t1,
- const time_type & t2);
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_write_some(
+ implementation_type & impl,
+ const ConstBufferSequence & buffers,
+ WriteHandler handler);
 
 
 
@@ -38566,11 +47297,13 @@
 
 
 
-[section:now time_traits< boost::posix_time::ptime >::now]
+[section:cancel windows::stream_handle_service::cancel]
 
-Get the current time.
+Cancel all asynchronous operations associated with the handle.
 
- static time_type now();
+ boost::system::error_code cancel(
+ implementation_type & impl,
+ boost::system::error_code & ec);
 
 
 
@@ -38578,13 +47311,13 @@
 
 
 
-[section:subtract time_traits< boost::posix_time::ptime >::subtract]
+[section:close windows::stream_handle_service::close]
 
-Subtract one time from another.
+Close a stream handle implementation.
 
- static duration_type subtract(
- const time_type & t1,
- const time_type & t2);
+ boost::system::error_code close(
+ implementation_type & impl,
+ boost::system::error_code & ec);
 
 
 
@@ -38592,12 +47325,25 @@
 
 
 
-[section:time_type time_traits< boost::posix_time::ptime >::time_type]
+[section:construct windows::stream_handle_service::construct]
 
-The time type.
+Construct a new stream handle implementation.
 
- typedef boost::posix_time::ptime time_type;
+ void construct(
+ implementation_type & impl);
+
+
+
+[endsect]
+
+
+
+[section:destroy windows::stream_handle_service::destroy]
 
+Destroy a stream handle implementation.
+
+ void destroy(
+ implementation_type & impl);
 
 
 
@@ -38605,12 +47351,14 @@
 
 
 
-[section:to_posix_duration time_traits< boost::posix_time::ptime >::to_posix_duration]
+[section:get_io_service windows::stream_handle_service::get_io_service]
 
-Convert to POSIX duration type.
 
- static boost::posix_time::time_duration to_posix_duration(
- const duration_type & d);
+['Inherited from io_service.]
+
+Get the io_service object that owns the service.
+
+ boost::asio::io_service & get_io_service();
 
 
 
@@ -38618,39 +47366,39 @@
 
 
 
+[section:id windows::stream_handle_service::id]
+
+The unique service identifier.
+
+ static boost::asio::io_service::id id;
+
+
+
 [endsect]
 
 
-[section:transfer_all transfer_all]
 
-Return a completion condition function object that indicates that a read or write operation should continue until all of the data has been transferred, or until an error occurs.
+[section:implementation_type windows::stream_handle_service::implementation_type]
 
- unspecified transfer_all();
+The type of a stream handle implementation.
 
+ typedef implementation_defined implementation_type;
 
-This function is used to create an object, of unspecified type, that meets CompletionCondition requirements.
 
 
-[heading Example]
-
-Reading until a buffer is full:
 
- boost::array<char, 128> buf;
- boost::system::error_code ec;
- std::size_t n = boost::asio::read(
- sock, boost::asio::buffer(buf),
- boost::asio::transfer_all(), ec);
- if (ec)
- {
- // An error occurred.
- }
- else
- {
- // n == 128
- }
+[endsect]
+
+
+
+[section:io_service windows::stream_handle_service::io_service]
 
 
+['Inherited from io_service.]
+
+(Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
+ boost::asio::io_service & io_service();
 
 
 
@@ -38658,37 +47406,25 @@
 
 
 
-[section:transfer_at_least transfer_at_least]
+[section:is_open windows::stream_handle_service::is_open]
 
-Return a completion condition function object that indicates that a read or write operation should continue until a minimum number of bytes has been transferred, or until an error occurs.
+Determine whether the handle is open.
 
- unspecified transfer_at_least(
- std::size_t minimum);
+ bool is_open(
+ const implementation_type & impl) const;
 
 
-This function is used to create an object, of unspecified type, that meets CompletionCondition requirements.
 
+[endsect]
 
-[heading Example]
-
-Reading until a buffer is full or contains at least 64 bytes:
 
- boost::array<char, 128> buf;
- boost::system::error_code ec;
- std::size_t n = boost::asio::read(
- sock, boost::asio::buffer(buf),
- boost::asio::transfer_at_least(64), ec);
- if (ec)
- {
- // An error occurred.
- }
- else
- {
- // n >= 64 && n <= 128
- }
 
+[section:native windows::stream_handle_service::native]
 
+Get the native handle implementation.
 
+ native_type native(
+ implementation_type & impl);
 
 
 
@@ -38696,37 +47432,80 @@
 
 
 
-[section:use_service use_service]
+[section:native_type windows::stream_handle_service::native_type]
+
+The native handle type.
+
+ typedef implementation_defined native_type;
+
+
 
 
+[endsect]
+
+
+
+[section:read_some windows::stream_handle_service::read_some]
+
+Read some data from the stream.
 
   template<
- typename ``[link boost_asio.reference.Service Service]``>
- Service & use_service(
- io_service & ios);
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some(
+ implementation_type & impl,
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
 
 
-This function is used to locate a service object that corresponds to the given service type. If there is no existing implementation of the service, then the io_service will create a new instance of the service.
 
+[endsect]
 
-[heading Parameters]
-
 
-[variablelist
-
-[[ios][The io\_service object that owns the service.]]
 
-]
+[section:shutdown_service windows::stream_handle_service::shutdown_service]
+
+Destroy all user-defined handler objects owned by the service.
+
+ void shutdown_service();
+
+
+
+[endsect]
+
+
+
+[section:stream_handle_service windows::stream_handle_service::stream_handle_service]
+
+Construct a new stream handle service for the specified io_service.
+
+ stream_handle_service(
+ boost::asio::io_service & io_service);
+
 
-[heading Return Value]
-
-The service interface implementing the specified service type. Ownership of the service interface is not transferred to the caller.
+
+[endsect]
+
+
+
+[section:write_some windows::stream_handle_service::write_some]
+
+Write the given data to the stream.
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some(
+ implementation_type & impl,
+ const ConstBufferSequence & buffers,
+ boost::system::error_code & ec);
 
 
 
 [endsect]
 
 
+
+[endsect]
+
 [section:write write]
 
 Write all of the supplied data to a stream before returning.

Modified: branches/proto/v4/libs/asio/doc/reference.xsl
==============================================================================
--- branches/proto/v4/libs/asio/doc/reference.xsl (original)
+++ branches/proto/v4/libs/asio/doc/reference.xsl 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -45,9 +45,11 @@
 [include requirements/ConvertibleToConstBuffer.qbk]
 [include requirements/ConvertibleToMutableBuffer.qbk]
 [include requirements/DatagramSocketService.qbk]
+[include requirements/DescriptorService.qbk]
 [include requirements/Endpoint.qbk]
 [include requirements/GettableSocketOption.qbk]
 [include requirements/Handler.qbk]
+[include requirements/HandleService.qbk]
 [include requirements/InternetProtocol.qbk]
 [include requirements/IoControlCommand.qbk]
 [include requirements/IoObjectService.qbk]
@@ -60,6 +62,8 @@
 [include requirements/SettableSocketOption.qbk]
 [include requirements/SocketAcceptorService.qbk]
 [include requirements/SocketService.qbk]
+[include requirements/StreamDescriptorService.qbk]
+[include requirements/StreamHandleService.qbk]
 [include requirements/StreamSocketService.qbk]
 [include requirements/SyncReadStream.qbk]
 [include requirements/SyncWriteStream.qbk]
@@ -85,7 +89,9 @@
         </xsl:if>
       </xsl:when>
       <xsl:otherwise>
- <xsl:if test="not(contains(ancestor::*/compoundname, '::detail'))">
+ <xsl:if test="
+ not(contains(ancestor::*/compoundname, '::detail')) and
+ not(contains(ancestor::*/compoundname, '_helper'))">
           <xsl:call-template name="namespace-memberdef"/>
         </xsl:if>
       </xsl:otherwise>
@@ -191,6 +197,12 @@
          select="concat(substring-before($name, '&gt;'), '_gt_', substring-after($name, '&gt;'))"/>
       </xsl:call-template>
     </xsl:when>
+ <xsl:when test="contains($name, '+')">
+ <xsl:call-template name="make-id">
+ <xsl:with-param name="name"
+ select="concat(substring-before($name, '+'), '_plus_', substring-after($name, '+'))"/>
+ </xsl:call-template>
+ </xsl:when>
     <xsl:when test="contains($name, '~')">
       <xsl:call-template name="make-id">
         <xsl:with-param name="name"
@@ -616,11 +628,11 @@
 ]
 </xsl:if>
 
-<xsl:if test="count(sectiondef[@kind='friend']/memberdef[not(type = 'friend class')]) &gt; 0">
-[heading Friends]
+<xsl:if test="count(sectiondef[@kind='protected-func' or @kind='protected-static-func']) > 0">
+[heading Protected Member Functions]
 [table
   [[Name][Description]]
-<xsl:for-each select="sectiondef[@kind='friend']/memberdef[not(type = 'friend class')]" mode="class-table">
+<xsl:for-each select="sectiondef[@kind='protected-func' or @kind='protected-static-func']/memberdef" mode="class-table">
   <xsl:sort select="name"/>
   <xsl:variable name="name">
     <xsl:value-of select="name"/>
@@ -665,13 +677,99 @@
 </xsl:for-each>
 ]
 </xsl:if>
+
+<xsl:if test="count(sectiondef[@kind='protected-attrib' or @kind='protected-static-attrib']) > 0">
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+<xsl:for-each select="sectiondef[@kind='protected-attrib' or @kind='protected-static-attrib']/memberdef" mode="class-table">
+ <xsl:sort select="name"/>
+ [
+ [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="name"/>
+ <xsl:text> </xsl:text>[*<xsl:value-of select="name"/>]]]
+ [<xsl:value-of select="briefdescription"/>]
+ ]
+</xsl:for-each>
+]
+</xsl:if>
+
+<xsl:if test="count(sectiondef[@kind='friend']/memberdef[not(type = 'friend class') and not(contains(name, '_helper'))]) &gt; 0">
+[heading Friends]
+[table
+ [[Name][Description]]
+<xsl:for-each select="sectiondef[@kind='friend']/memberdef[not(type = 'friend class') and not(contains(name, '_helper'))]" mode="class-table">
+ <xsl:sort select="name"/>
+ <xsl:variable name="name">
+ <xsl:value-of select="name"/>
+ </xsl:variable>
+ <xsl:variable name="id">
+ <xsl:call-template name="make-id">
+ <xsl:with-param name="name" select="$name"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="doxygen-id">
+ <xsl:value-of select="@id"/>
+ </xsl:variable>
+ <xsl:variable name="overload-position">
+ <xsl:for-each select="../memberdef[name = $name]">
+ <xsl:if test="@id = $doxygen-id">
+ <xsl:value-of select="position()"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:if test="$overload-position = 1">
+ [
+ [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="$id"/>
+ <xsl:text> </xsl:text>[*<xsl:value-of select="$name"/>]]]
+ [<xsl:value-of select="briefdescription"/>]
+ ]
+ </xsl:if>
+</xsl:for-each>
+]
+</xsl:if>
+
+<xsl:if test="count(sectiondef[@kind='related']/memberdef) &gt; 0">
+[heading Related Functions]
+[table
+ [[Name][Description]]
+<xsl:for-each select="sectiondef[@kind='related']/memberdef" mode="class-table">
+ <xsl:sort select="name"/>
+ <xsl:variable name="name">
+ <xsl:value-of select="name"/>
+ </xsl:variable>
+ <xsl:variable name="id">
+ <xsl:call-template name="make-id">
+ <xsl:with-param name="name" select="$name"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="doxygen-id">
+ <xsl:value-of select="@id"/>
+ </xsl:variable>
+ <xsl:variable name="overload-position">
+ <xsl:for-each select="../memberdef[name = $name]">
+ <xsl:if test="@id = $doxygen-id">
+ <xsl:value-of select="position()"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:if test="$overload-position = 1">
+ [
+ [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="$id"/>
+ <xsl:text> </xsl:text>[*<xsl:value-of select="$name"/>]]]
+ [<xsl:value-of select="briefdescription"/>]
+ ]
+ </xsl:if>
+</xsl:for-each>
+]
+</xsl:if>
+
 </xsl:template>
 
 
 <xsl:template name="class-members">
 <xsl:param name="class-name"/>
 <xsl:param name="class-id"/>
-<xsl:apply-templates select="sectiondef[@kind='public-type' or @kind='public-func' or @kind='public-static-func' or @kind='public-attrib' or @kind='public-static-attrib' or @kind='friend']/memberdef[not(type = 'friend class')]" mode="class-detail">
+<xsl:apply-templates select="sectiondef[@kind='public-type' or @kind='public-func' or @kind='public-static-func' or @kind='public-attrib' or @kind='public-static-attrib' or @kind='protected-func' or @kind='protected-static-func' or @kind='protected-attrib' or @kind='protected-static-attrib' or @kind='friend' or @kind='related']/memberdef[not(type = 'friend class') and not(contains(name, '_helper'))]" mode="class-detail">
   <xsl:sort select="name"/>
   <xsl:with-param name="class-name" select="$class-name"/>
   <xsl:with-param name="class-id" select="$class-id"/>

Modified: branches/proto/v4/libs/bind/test/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/bind/test/Jamfile.v2 (original)
+++ branches/proto/v4/libs/bind/test/Jamfile.v2 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -34,4 +34,5 @@
       [ run mem_fn_eq_test.cpp ]
       [ run mem_fn_dm_test.cpp ]
       [ run mem_fn_rv_test.cpp ]
+ [ run ref_fn_test.cpp ]
     ;

Modified: branches/proto/v4/libs/config/doc/guidelines.qbk
==============================================================================
--- branches/proto/v4/libs/config/doc/guidelines.qbk (original)
+++ branches/proto/v4/libs/config/doc/guidelines.qbk 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -59,7 +59,7 @@
 majority of compilers, such as namespaces, exceptions, RTTI, or templates.
 
 
-[section:warnings Disabling Compiler Warings]
+[section:warnings Disabling Compiler Warnings]
 
 The header `<boost/config/warning_disable.hpp>` can be used to disable
 certain compiler warings that are hard or impossible to otherwise remove.

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-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -670,6 +670,24 @@
 <tr>
 <td>
               <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not correctly handle partial specializations which
+ depend upon default arguments in the primary template.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
                 <code class="computeroutput"><span class="identifier">BOOST_NO_POINTER_TO_MEMBER_CONST</span></code>
               </p>
               </td>
@@ -1029,6 +1047,23 @@
 <tr>
 <td>
               <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_TEMPLATED_IOSTREAMS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide templated iostream classes.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
                 <code class="computeroutput"><span class="identifier">BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS</span></code>
               </p>
               </td>

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-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -29,7 +29,7 @@
 </h2></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section"><a href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.warnings">
- Disabling Compiler Warings</a></span></dt>
+ Disabling Compiler Warnings</a></span></dt>
 <dt><span class="section"><a href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_defect_macros">Adding
       New Defect Macros</a></span></dt>
 <dt><span class="section"><a href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros">Adding
@@ -105,8 +105,8 @@
 </ul></div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_config.guidelines_for_boost_authors.warnings"></a><a href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.warnings" title="Disabling Compiler Warings">
- Disabling Compiler Warings</a>
+<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>
         The header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">warning_disable</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>

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-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -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="id435841"></a><p>
+<a name="id437611"></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>
@@ -74,7 +74,7 @@
     Boost Authors</a></span></dt>
 <dd><dl>
 <dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.warnings">
- Disabling Compiler Warings</a></span></dt>
+ Disabling Compiler Warnings</a></span></dt>
 <dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_defect_macros">Adding
       New Defect Macros</a></span></dt>
 <dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros">Adding
@@ -960,7 +960,7 @@
   </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: April 20, 2008 at 12:51:56 GMT</small></p></td>
+<td align="left"><p><small>Last revised: April 21, 2008 at 11:41:47 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-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -176,6 +176,10 @@
 namespace scope, then using'ed to boost. Probably GCC specific. See
 [@../../../../boost/operators.hpp `<boost/operators.hpp>`] for example.
 ]]
+[[`BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS`][Compiler][
+The compiler does not correctly handle partial specializations
+which depend upon default arguments in the primary template.
+]]
 [[`BOOST_NO_POINTER_TO_MEMBER_CONST`][Compiler][
 The compiler does not correctly handle pointers to const member functions,
 preventing use of these in overloaded function templates. See
@@ -250,6 +254,9 @@
 Class template partial specialization (14.5.4 \[temp.class.spec\]) not
 supported.
 ]]
+[[`BOOST_NO_TEMPLATED_IOSTREAMS`][Standard library][
+The standard library does not provide templated iostream classes.
+]]
 [[`BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS`][Standard library][
 The standard library does not provide templated iterator constructors
 for its containers.

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-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -1,7 +1,7 @@
 #
 # Regression test Jamfile for boost configuration setup.
 # *** DO NOT EDIT THIS FILE BY HAND ***
-# This file was automatically generated on Mon Apr 14 17:10:09 2008
+# This file was automatically generated on Mon Apr 21 12:40:41 2008
 # by libs/config/tools/generate.cpp
 # Copyright John Maddock.
 # Use, modification and distribution are subject to the
@@ -280,6 +280,9 @@
 test-suite "BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION" :
 [ run ../no_partial_spec_pass.cpp ]
 [ compile-fail ../no_partial_spec_fail.cpp ] ;
+test-suite "BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS" :
+[ run ../no_part_spec_def_args_pass.cpp ]
+[ compile-fail ../no_part_spec_def_args_fail.cpp ] ;
 test-suite "BOOST_NO_PRIVATE_IN_AGGREGATE" :
 [ run ../no_priv_aggregate_pass.cpp ]
 [ compile-fail ../no_priv_aggregate_fail.cpp ] ;
@@ -337,6 +340,9 @@
 test-suite "BOOST_NO_SWPRINTF" :
 [ run ../no_swprintf_pass.cpp ]
 [ compile-fail ../no_swprintf_fail.cpp ] ;
+test-suite "BOOST_NO_TEMPLATED_IOSTREAMS" :
+[ run ../no_template_streams_pass.cpp ]
+[ compile-fail ../no_template_streams_fail.cpp ] ;
 test-suite "BOOST_NO_TEMPLATE_TEMPLATES" :
 [ run ../no_template_template_pass.cpp ]
 [ compile-fail ../no_template_template_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-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -983,6 +983,7 @@
    PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATE_KEYWORD);
    PRINT_MACRO(BOOST_NO_MS_INT64_NUMERIC_LIMITS);
    PRINT_MACRO(BOOST_NO_OPERATORS_IN_NAMESPACE);
+ PRINT_MACRO(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS);
    PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_CONST);
    PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS);
    PRINT_MACRO(BOOST_NO_PRIVATE_IN_AGGREGATE);
@@ -1002,6 +1003,7 @@
    PRINT_MACRO(BOOST_NO_STD_WSTRING);
    PRINT_MACRO(BOOST_NO_STRINGSTREAM);
    PRINT_MACRO(BOOST_NO_SWPRINTF);
+ PRINT_MACRO(BOOST_NO_TEMPLATED_IOSTREAMS);
    PRINT_MACRO(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS);
    PRINT_MACRO(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION);
    PRINT_MACRO(BOOST_NO_TEMPLATE_TEMPLATES);
@@ -1028,6 +1030,10 @@
 
 
 
+
+
+
+
    // 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-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -1,4 +1,4 @@
-// This file was automatically generated on Mon Apr 14 17:10:09 2008
+// This file was automatically generated on Mon Apr 21 12:40:41 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // Use, modification and distribution are subject to the
@@ -197,6 +197,11 @@
 #else
 namespace boost_no_template_partial_specialization = empty_boost;
 #endif
+#ifndef BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
+#include "boost_no_part_spec_def_args.ipp"
+#else
+namespace boost_no_partial_specialization_implicit_default_args = empty_boost;
+#endif
 #ifndef BOOST_NO_PRIVATE_IN_AGGREGATE
 #include "boost_no_priv_aggregate.ipp"
 #else
@@ -292,6 +297,11 @@
 #else
 namespace boost_no_swprintf = empty_boost;
 #endif
+#ifndef BOOST_NO_TEMPLATED_IOSTREAMS
+#include "boost_no_template_streams.ipp"
+#else
+namespace boost_no_templated_iostreams = empty_boost;
+#endif
 #ifndef BOOST_NO_TEMPLATE_TEMPLATES
 #include "boost_no_template_template.ipp"
 #else
@@ -1021,6 +1031,11 @@
       std::cerr << "Failed test for BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION at: " << __FILE__ << ":" << __LINE__ << std::endl;
       ++error_count;
    }
+ if(0 != boost_no_partial_specialization_implicit_default_args::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
    if(0 != boost_no_private_in_aggregate::test())
    {
       std::cerr << "Failed test for BOOST_NO_PRIVATE_IN_AGGREGATE at: " << __FILE__ << ":" << __LINE__ << std::endl;
@@ -1116,6 +1131,11 @@
       std::cerr << "Failed test for BOOST_NO_SWPRINTF at: " << __FILE__ << ":" << __LINE__ << std::endl;
       ++error_count;
    }
+ if(0 != boost_no_templated_iostreams::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_TEMPLATED_IOSTREAMS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
    if(0 != boost_no_template_templates::test())
    {
       std::cerr << "Failed test for BOOST_NO_TEMPLATE_TEMPLATES at: " << __FILE__ << ":" << __LINE__ << std::endl;

Modified: branches/proto/v4/libs/exception/test/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/exception/test/Jamfile.v2 (original)
+++ branches/proto/v4/libs/exception/test/Jamfile.v2 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -7,6 +7,13 @@
 
 import testing ;
 
+project :
+ requirements
+ <link>static
+ <runtime-link>static
+ <toolset>msvc:<cxxflags>/Za
+ ;
+
 #to_string
 run is_output_streamable_test.cpp ;
 run has_to_string_test.cpp ;

Modified: branches/proto/v4/libs/filesystem/test/convenience_test.cpp
==============================================================================
--- branches/proto/v4/libs/filesystem/test/convenience_test.cpp (original)
+++ branches/proto/v4/libs/filesystem/test/convenience_test.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -12,8 +12,6 @@
 // See http://msdn.microsoft.com/msdnmag/issues/05/05/SafeCandC/default.aspx
 // But at least in VC++ 8.0 betas, their own libraries use the problem
 // practices. So turn off the warnings.
-#define _CRT_SECURE_NO_DEPRECATE
-#define _SCL_SECURE_NO_DEPRECATE
 
 #include <boost/filesystem/convenience.hpp>
 namespace fs = boost::filesystem;

Modified: branches/proto/v4/libs/filesystem/test/fstream_test.cpp
==============================================================================
--- branches/proto/v4/libs/filesystem/test/fstream_test.cpp (original)
+++ branches/proto/v4/libs/filesystem/test/fstream_test.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -11,8 +11,7 @@
 // See http://msdn.microsoft.com/msdnmag/issues/05/05/SafeCandC/default.aspx
 // But at least in VC++ 8.0 betas, their own libraries use the problem
 // practices. So turn off the warnings.
-#define _CRT_SECURE_NO_DEPRECATE
-#define _SCL_SECURE_NO_DEPRECATE
+#include <boost/config/warning_disable.hpp>
 
 #include <boost/filesystem/fstream.hpp>
 #include <boost/filesystem/operations.hpp>

Modified: branches/proto/v4/libs/filesystem/test/operations_test.cpp
==============================================================================
--- branches/proto/v4/libs/filesystem/test/operations_test.cpp (original)
+++ branches/proto/v4/libs/filesystem/test/operations_test.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -11,9 +11,7 @@
 // See http://msdn.microsoft.com/msdnmag/issues/05/05/SafeCandC/default.aspx
 // But at least in VC++ 8.0 betas, their own libraries use the problem
 // practices. So turn off the warnings.
-#define _CRT_SECURE_NO_DEPRECATE
-#define _SCL_SECURE_NO_DEPRECATE
-
+#include <boost/config/warning_disable.hpp>
 #include <boost/filesystem/operations.hpp>
 #include <boost/filesystem/convenience.hpp>
 #include <boost/cerrno.hpp>

Modified: branches/proto/v4/libs/filesystem/test/wide_test.cpp
==============================================================================
--- branches/proto/v4/libs/filesystem/test/wide_test.cpp (original)
+++ branches/proto/v4/libs/filesystem/test/wide_test.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -12,8 +12,7 @@
 // See http://msdn.microsoft.com/msdnmag/issues/05/05/SafeCandC/default.aspx
 // But at least in VC++ 8.0 betas, their own libraries use the problem
 // practices. So turn off the warnings.
-#define _CRT_SECURE_NO_DEPRECATE
-#define _SCL_SECURE_NO_DEPRECATE
+#include <boost/config/warning_disable.hpp>
 
 #include <boost/filesystem/config.hpp>
 # ifdef BOOST_FILESYSTEM_NARROW_ONLY

Modified: branches/proto/v4/libs/graph/doc/history.html
==============================================================================
--- branches/proto/v4/libs/graph/doc/history.html (original)
+++ branches/proto/v4/libs/graph/doc/history.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -78,6 +78,12 @@
 <ul>
   <a name="1.35.0"></a><li>Version 1.35.0<br><b>New algorithms and components</b>
     <ul>
+ <li>r_c_shortest_paths, resource-constrained shortest paths, from Michael Drexl.</li>
+ </ul>
+ </li>
+
+ <a name="1.35.0"></a><li>Version 1.35.0<br><b>New algorithms and components</b>
+ <ul>
       <li>kolmogorov_max_flow, from Stephan Diederich as part of the 2006 Google Summer of Code.</li>
       <li>read_dimacs_max_flow and write_dimacs_max_flow for max-flow problems, from Stephan Diederich.</li>
       <li>read_graphml and write_graphml for GraphML input/output, from Tiago de Paula Peixoto.</li>

Modified: branches/proto/v4/libs/graph/doc/table_of_contents.html
==============================================================================
--- branches/proto/v4/libs/graph/doc/table_of_contents.html (original)
+++ branches/proto/v4/libs/graph/doc/table_of_contents.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -143,6 +143,7 @@
                     <LI><A
                     href="./johnson_all_pairs_shortest.html"><tt>johnson_all_pairs_shortest_paths</tt></A>
                     <li>floyd_warshall_all_pairs_shortest_paths</li>
+ <li>r_c_shortest_paths - resource-constrained shortest paths</li>
                   </OL>
                 <LI>Minimum Spanning Tree Algorithms
                   <OL>

Modified: branches/proto/v4/libs/graph/test/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/graph/test/Jamfile.v2 (original)
+++ branches/proto/v4/libs/graph/test/Jamfile.v2 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -133,6 +133,8 @@
         ../../system/build
         : $(PLANAR_INPUT_FILES) ]
 
+ [ run r_c_shortest_paths_test.cpp ]
+
     $(optional_tests)
     ;
 

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/credits.qbk
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/credits.qbk (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/credits.qbk 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -36,7 +36,8 @@
 Plots of the functions and distributions were prepared in
 [@http://www.w3.org/ W3C] standard
 [@http://www.svg.org/ Scalable Vector Graphic (SVG)] format
-using a program created by Jacob Voytko during a Google 'Summer of Code'.
+using a program created by Jacob Voytko during a
+[@http://code.google.com/soc/2007/ Google Summer of Code (2007)].
 Since browser support for rendering SVG is still not universal
 (Microsoft Internet Explorer, even IE 8 beta, still lacks native SVG support
 but can be made to work with
@@ -49,10 +50,10 @@
 Arnaldur Gylfason, John Phillips, Stephan Tolksdorf and Jeff Garland
 - for their many helpful comments.
 
-[endsect][/section:roadmap Roadmap]
+[endsect] [/section:credits Credits and Acknowledgements]
 
 [/
- Copyright 2006 - 2008 John Maddock and Paul A. Bristow.
+ Copyright 2006, 2007, 2008 John Maddock and Paul A. Bristow.
   Distributed under the Boost Software License, Version 1.0.
   (See accompanying file LICENSE_1_0.txt or copy at
   http://www.boost.org/LICENSE_1_0.txt).

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/erf.qbk
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/erf.qbk (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/erf.qbk 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -169,17 +169,13 @@
 then a series of rational approximations [jm_rationals] are used.
 
 For `z <= 0.5` then a rational approximation to erf is used, based on the
-observation that:
+observation that erf is an odd function and therefore erf is calculated using:
 
- erf(z)/z ~ 1.12....
+ erf(z) = z * (C + R(z*z));
    
-Therefore erf is calculated using:
-
- erf(z) = z * (1.125F + R(z));
-
-where the rational approximation R(z) is optimised for absolute error:
-as long as its absolute error is small enough compared to 1.125, then any
-round-off error incurred during the computation of R(z) will effectively
+where the rational approximation R(z*z) is optimised for absolute error:
+as long as its absolute error is small enough compared to the constant C, then any
+round-off error incurred during the computation of R(z*z) will effectively
 disappear from the result. As a result the error for erf and erfc in this
 region is very low: the last bit is incorrect in only a very small number of
 cases.
@@ -192,15 +188,20 @@
 
 Therefore for `z > 0.5` we calculate erfc using:
 
- erfc(z) = exp(-z*z) * (c + R(z)) / z;
+ erfc(z) = exp(-z*z) * (C + R(z - B)) / z;
    
-Again R(z) is optimised for absolute error, and the constant `c` is
+Again R(z - B) is optimised for absolute error, and the constant `C` is
 the average of `erfc(z) * exp(z*z) * z` taken at the endpoints of the range.
-Once again, as long as the absolute error in R(z) is small
-compared to `c` then `c + R(z)` will be correctly rounded, and the error
+Once again, as long as the absolute error in R(z - B) is small
+compared to `c` then `c + R(z - B)` will be correctly rounded, and the error
 in the result will depend only on the accuracy of the exp function. In practice,
 in all but a very small number of cases, the error is confined to the last bit
-of the result.
+of the result. The constant `B` is chosen so that the left hand end of the range
+of the rational approximation is 0.
+
+For large `z` over a range \[a, +[infin]\] the above approximation is modified to:
+
+ erfc(z) = exp(-z*z) * (C + R(1 / z)) / z;
 
 [endsect]
 [/ :error_function The Error Functions]

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/fpclassify.qbk
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/fpclassify.qbk (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/fpclassify.qbk 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -1,4 +1,4 @@
-[section:fpclass Floating Point Classification: Infinities and NaN's]
+[section:fpclass Floating-Point Classification: Infinities and NaN's]
 
 [h4 Synopsis]
 
@@ -12,16 +12,20 @@
    int fpclassify(T t);
 
    template <class T>
- bool isfinite(T z);
+ bool isfinite(T z); // Neither infinity nor NaN.
 
    template <class T>
- bool isinf(T t);
+ bool isinf(T t); // Infinity (+ or -).
 
    template <class T>
- bool isnan(T t);
+ bool isnan(T t); // NaN.
 
    template <class T>
- bool isnormal(T t);
+ bool isnormal(T t); // isfinite and not denormalised.
+
+ #include <boost\math\special_functions\fpclassify.hpp>
+
+to use these functions.
 
 [h4 Description]
 
@@ -49,9 +53,18 @@
    // As above but with namespace qualification.
    (boost::math::isnan)(z);
    //
- // This will cause a compiler error is isnan is a native macro:
+ // This will cause a compiler error if isnan is a native macro:
    boost::math::isnan(z);
- // So always use (boost::math::isnan)(z); instead.
+ // So always use instead:
+ (boost::math::isnan)(z);
+ //
+ // You can also add a using statment,
+ // globally to a .cpp file, or to a local function in a .hpp file.
+ using boost::math::isnan;
+ // so you can write the shorter and less cluttered
+ (isnan)(z)
+ // But, as above, if isnan is a native macro, this causes a compiler error,
+ // because the macro always 'gets' the name first, unless enclosed in () brackets.
    
 Detailed descriptions for each of these functions follows:
 
@@ -82,7 +95,7 @@
    template <class T>
    bool isnan(T t);
 
-Returns true only if /z/ is a NaN.
+Returns true only if /z/ is a [@http://en.wikipedia.org/wiki/NaN NaN].
 
    template <class T>
    bool isnormal(T t);
@@ -92,7 +105,7 @@
 [endsect] [/section:fpclass Floating Point Classification: Infinities and NaN's]
 
 [/
- Copyright 2006 John Maddock and Paul A. Bristow.
+ Copyright 2006, 2008 John Maddock and Paul A. Bristow.
   Distributed under the Boost Software License, Version 1.0.
   (See accompanying file LICENSE_1_0.txt or copy at
   http://www.boost.org/LICENSE_1_0.txt).

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/index.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/index.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/index.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -291,7 +291,7 @@
 <dt><span class="section"><a href="math_toolkit/special/rounding/modf.html"> Integer and Fractional
         Part Splitting (modf)</a></span></dt>
 </dl></dd>
-<dt><span class="section"><a href="math_toolkit/special/fpclass.html"> Floating Point Classification:
+<dt><span class="section"><a href="math_toolkit/special/fpclass.html"> Floating-Point Classification:
       Infinities and NaN's</a></span></dt>
 </dl></dd>
 <dt><span class="section"> Internal Details and Tools (Experimental)</span></dt>
@@ -422,7 +422,7 @@
   </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: April 07, 2008 at 16:18:49 GMT</small></p></td>
+<td align="left"><p><small>Last revised: April 21, 2008 at 12:48:57 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/implementation.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/implementation.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/implementation.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -33,7 +33,7 @@
         and reflect more the general implementation philosophy used.
       </p>
 <a name="math_toolkit.backgrounders.implementation.implemention_philosophy"></a><h5>
-<a name="id806336"></a>
+<a name="id806718"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.implemention_philosophy">Implemention
         philosophy</a>
       </h5>
@@ -85,7 +85,7 @@
         These could still provide sufficient accuracy for some speed-critical applications.
       </p>
 <a name="math_toolkit.backgrounders.implementation.accuracy_and_representation_of_test_values"></a><h5>
-<a name="id806447"></a>
+<a name="id806828"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.accuracy_and_representation_of_test_values">Accuracy
         and Representation of Test Values</a>
       </h5>
@@ -130,7 +130,7 @@
         binary value).
       </p>
 <a name="math_toolkit.backgrounders.implementation.tolerance_of_tests"></a><h5>
-<a name="id806691"></a>
+<a name="id807060"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.tolerance_of_tests">Tolerance
         of Tests</a>
       </h5>
@@ -156,7 +156,7 @@
         first that the suffix L is present, and then that the tolerance is big enough.
       </p>
 <a name="math_toolkit.backgrounders.implementation.handling_unsuitable_arguments"></a><h5>
-<a name="id806751"></a>
+<a name="id807120"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.handling_unsuitable_arguments">Handling
         Unsuitable Arguments</a>
       </h5>
@@ -242,7 +242,7 @@
         </p></td></tr>
 </table></div>
 <a name="math_toolkit.backgrounders.implementation.handling_of_functions_that_are_not_mathematically_defined"></a><h5>
-<a name="id806975"></a>
+<a name="id807345"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.handling_of_functions_that_are_not_mathematically_defined">Handling
         of Functions that are Not Mathematically defined</a>
       </h5>
@@ -276,7 +276,7 @@
         </p></td></tr>
 </table></div>
 <a name="math_toolkit.backgrounders.implementation.median_of_distributions"></a><h5>
-<a name="id807116"></a>
+<a name="id807486"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.median_of_distributions">Median
         of distributions</a>
       </h5>
@@ -309,7 +309,7 @@
         Basic Statistics.</a> give more detail, in particular for discrete distributions.
       </p>
 <a name="math_toolkit.backgrounders.implementation.handling_of_floating_point_infinity"></a><h5>
-<a name="id807261"></a>
+<a name="id807630"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.handling_of_floating_point_infinity">Handling
         of Floating-Point Infinity</a>
       </h5>
@@ -353,7 +353,7 @@
         handling policies</a>.
       </p>
 <a name="math_toolkit.backgrounders.implementation.scale__shape_and_location"></a><h5>
-<a name="id807419"></a>
+<a name="id807788"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.scale__shape_and_location">Scale,
         Shape and Location</a>
       </h5>
@@ -380,7 +380,7 @@
         functions, they can be added if required.
       </p>
 <a name="math_toolkit.backgrounders.implementation.notes_on_implementation_of_specific_functions__amp__distributions"></a><h5>
-<a name="id807884"></a>
+<a name="id808253"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.notes_on_implementation_of_specific_functions__amp__distributions">Notes
         on Implementation of Specific Functions &amp; Distributions</a>
       </h5>
@@ -392,7 +392,7 @@
           0 and upper = 1 would be more suitable.
         </li></ul></div>
 <a name="math_toolkit.backgrounders.implementation.rational_approximations_used"></a><h5>
-<a name="id807924"></a>
+<a name="id808293"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.rational_approximations_used">Rational
         Approximations Used</a>
       </h5>
@@ -435,7 +435,7 @@
         to the "true" minimax solution.
       </p>
 <a name="math_toolkit.backgrounders.implementation.representation_of_mathematical_constants"></a><h5>
-<a name="id808021"></a>
+<a name="id808389"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.representation_of_mathematical_constants">Representation
         of Mathematical Constants</a>
       </h5>
@@ -496,7 +496,7 @@
 </span><span class="keyword">double</span> <span class="identifier">p</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">constants</span><span class="special">::</span><span class="identifier">pi</span><span class="special">();</span> <span class="comment">// Context does not allow for disambiguation of overloaded function
 </span></pre>
 <a name="math_toolkit.backgrounders.implementation.thread_safety"></a><h5>
-<a name="id808568"></a>
+<a name="id808958"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.thread_safety">Thread
         safety</a>
       </h5>
@@ -521,7 +521,7 @@
         the right thing here at some point.
       </p>
 <a name="math_toolkit.backgrounders.implementation.sources_of_test_data"></a><h5>
-<a name="id808633"></a>
+<a name="id809023"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.sources_of_test_data">Sources
         of Test Data</a>
       </h5>
@@ -565,7 +565,7 @@
         the underlying special function is known to be difficult to implement.
       </p>
 <a name="math_toolkit.backgrounders.implementation.creating_and_managing_the_equations"></a><h5>
-<a name="id808743"></a>
+<a name="id809134"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.creating_and_managing_the_equations">Creating
         and Managing the Equations</a>
       </h5>
@@ -726,7 +726,7 @@
         HTML: this needs further investigation.
       </p>
 <a name="math_toolkit.backgrounders.implementation.producing_graphs"></a><h5>
-<a name="id809122"></a>
+<a name="id809512"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.producing_graphs">Producing
         Graphs</a>
       </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/lanczos.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/lanczos.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/lanczos.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -27,7 +27,7 @@
 <a name="math_toolkit.backgrounders.lanczos"></a> The Lanczos Approximation
 </h3></div></div></div>
 <a name="math_toolkit.backgrounders.lanczos.motivation"></a><h5>
-<a name="id809523"></a>
+<a name="id809891"></a>
         <a href="lanczos.html#math_toolkit.backgrounders.lanczos.motivation">Motivation</a>
       </h5>
 <p>
@@ -98,7 +98,7 @@
         functions divided by large powers into single (simpler) expressions.
       </p>
 <a name="math_toolkit.backgrounders.lanczos.the_approximation"></a><h5>
-<a name="id809896"></a>
+<a name="id810268"></a>
         <a href="lanczos.html#math_toolkit.backgrounders.lanczos.the_approximation">The
         Approximation</a>
       </h5>
@@ -160,7 +160,7 @@
         </p></td></tr>
 </table></div>
 <a name="math_toolkit.backgrounders.lanczos.computing_the_coefficients"></a><h5>
-<a name="id810159"></a>
+<a name="id810531"></a>
         <a href="lanczos.html#math_toolkit.backgrounders.lanczos.computing_the_coefficients">Computing
         the Coefficients</a>
       </h5>
@@ -204,7 +204,7 @@
         multiplied by <span class="emphasis"><em>F</em></span> as the last step.
       </p>
 <a name="math_toolkit.backgrounders.lanczos.choosing_the_right_parameters"></a><h5>
-<a name="id810365"></a>
+<a name="id810737"></a>
         <a href="lanczos.html#math_toolkit.backgrounders.lanczos.choosing_the_right_parameters">Choosing
         the Right Parameters</a>
       </h5>
@@ -228,7 +228,7 @@
         computing to float precision with double precision arithmetic.
       </p>
 <div class="table">
-<a name="id810448"></a><p class="title"><b>Table 52. Optimal choices for N and g when computing with
+<a name="id810820"></a><p class="title"><b>Table 52. Optimal choices for N and g when computing with
       guard digits (source: Pugh)</b></p>
 <div class="table-contents"><table class="table" summary="Optimal choices for N and g when computing with
       guard digits (source: Pugh)">
@@ -371,7 +371,7 @@
         exactly matches the machine epsilon for the type in question.
       </p>
 <div class="table">
-<a name="id810775"></a><p class="title"><b>Table 53. Optimum value for N and g when computing at fixed
+<a name="id811142"></a><p class="title"><b>Table 53. Optimum value for N and g when computing at fixed
       precision</b></p>
 <div class="table-contents"><table class="table" summary="Optimum value for N and g when computing at fixed
       precision">
@@ -536,7 +536,7 @@
         is exact, and so isn't used for the gamma function.
       </p>
 <a name="math_toolkit.backgrounders.lanczos.references"></a><h5>
-<a name="id811053"></a>
+<a name="id811420"></a>
         <a href="lanczos.html#math_toolkit.backgrounders.lanczos.references">References</a>
       </h5>
 <a name="godfrey"></a><a name="pugh"></a><div class="orderedlist"><ol type="1">

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/refs.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/refs.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/refs.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -27,7 +27,7 @@
 <a name="math_toolkit.backgrounders.refs"></a> References
 </h3></div></div></div>
 <a name="math_toolkit.backgrounders.refs.general_references"></a><h5>
-<a name="id812417"></a>
+<a name="id812783"></a>
         <a href="refs.html#math_toolkit.backgrounders.refs.general_references">General
         references</a>
       </h5>
@@ -91,7 +91,7 @@
         Library (version 2), Walter E. Brown</a>
       </p>
 <a name="math_toolkit.backgrounders.refs.calculators__that_we_found__and_used_to_cross_check___as_far_as_their_widely_varying_accuracy_allowed__"></a><h5>
-<a name="id812591"></a>
+<a name="id812957"></a>
         <a href="refs.html#math_toolkit.backgrounders.refs.calculators__that_we_found__and_used_to_cross_check___as_far_as_their_widely_varying_accuracy_allowed__">Calculators*
         that we found (and used to cross-check - as far as their widely-varying accuracy
         allowed).</a>
@@ -101,7 +101,7 @@
         Binomial Probability Distribution Calculator.
       </p>
 <a name="math_toolkit.backgrounders.refs.other_libraries"></a><h5>
-<a name="id812636"></a>
+<a name="id813002"></a>
         <a href="refs.html#math_toolkit.backgrounders.refs.other_libraries">Other Libraries</a>
       </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/relative_error.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/relative_error.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/relative_error.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -81,7 +81,7 @@
 <a name="zero_error"></a><p>
       </p>
 <a name="math_toolkit.backgrounders.relative_error.the_impossibility_of_zero_error"></a><h5>
-<a name="id809422"></a>
+<a name="id809813"></a>
         <a href="relative_error.html#math_toolkit.backgrounders.relative_error.the_impossibility_of_zero_error">The
         Impossibility of Zero Error</a>
       </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/remez.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/remez.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/remez.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -94,7 +94,7 @@
         are located!</em></span>
       </p>
 <a name="math_toolkit.backgrounders.remez.the_remez_method"></a><h5>
-<a name="id811304"></a>
+<a name="id811671"></a>
         <a href="remez.html#math_toolkit.backgrounders.remez.the_remez_method">The Remez
         Method</a>
       </h5>
@@ -174,7 +174,7 @@
 </td></tr>
 </table></div>
 <a name="math_toolkit.backgrounders.remez.remez_step_1"></a><h5>
-<a name="id811524"></a>
+<a name="id811891"></a>
         <a href="remez.html#math_toolkit.backgrounders.remez.remez_step_1">Remez Step
         1</a>
       </h5>
@@ -205,7 +205,7 @@
         to 5.6x10<sup>-4</sup>.
       </p>
 <a name="math_toolkit.backgrounders.remez.remez_step_2"></a><h5>
-<a name="id811630"></a>
+<a name="id811997"></a>
         <a href="remez.html#math_toolkit.backgrounders.remez.remez_step_2">Remez Step
         2</a>
       </h5>
@@ -234,7 +234,7 @@
         In our example we perform multi-point exchange.
       </p>
 <a name="math_toolkit.backgrounders.remez.iteration"></a><h5>
-<a name="id811690"></a>
+<a name="id812057"></a>
         <a href="remez.html#math_toolkit.backgrounders.remez.iteration">Iteration</a>
       </h5>
 <p>
@@ -250,7 +250,7 @@
         <span class="inlinemediaobject"><img src="../../../graphs/remez-4.png" alt="remez-4"></span>
       </p>
 <a name="math_toolkit.backgrounders.remez.rational_approximations"></a><h5>
-<a name="id811752"></a>
+<a name="id812118"></a>
         <a href="remez.html#math_toolkit.backgrounders.remez.rational_approximations">Rational
         Approximations</a>
       </h5>
@@ -299,7 +299,7 @@
         number of terms overall.
       </p>
 <a name="math_toolkit.backgrounders.remez.practical_considerations"></a><h5>
-<a name="id811874"></a>
+<a name="id812241"></a>
         <a href="remez.html#math_toolkit.backgrounders.remez.practical_considerations">Practical
         Considerations</a>
       </h5>
@@ -407,7 +407,7 @@
         desired minimax solution (5x10<sup>-4</sup>).
       </p>
 <a name="math_toolkit.backgrounders.remez.remez_method_checklist"></a><h5>
-<a name="id812133"></a>
+<a name="id812499"></a>
         <a href="remez.html#math_toolkit.backgrounders.remez.remez_method_checklist">Remez
         Method Checklist</a>
       </h5>
@@ -461,7 +461,7 @@
         </li>
 </ul></div>
 <a name="math_toolkit.backgrounders.remez.references"></a><h5>
-<a name="id812236"></a>
+<a name="id812602"></a>
         <a href="remez.html#math_toolkit.backgrounders.remez.references">References</a>
       </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/history1.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/history1.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/history1.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -231,7 +231,7 @@
 <p>
         </p>
 <p>
- Sandbox and trunk last synchonised at revision: 44092.
+ Sandbox and trunk last synchonised at revision: 44694.
         </p>
 <p>
       </p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/comp_compilers.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/comp_compilers.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/comp_compilers.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -35,7 +35,7 @@
         in this respect).
       </p>
 <div class="table">
-<a name="id800269"></a><p class="title"><b>Table 47. Performance Comparison of Various Windows Compilers</b></p>
+<a name="id800657"></a><p class="title"><b>Table 47. Performance Comparison of Various Windows Compilers</b></p>
 <div class="table-contents"><table class="table" summary="Performance Comparison of Various Windows Compilers">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/comparisons.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/comparisons.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/comparisons.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -46,7 +46,7 @@
         </p></td></tr>
 </table></div>
 <a name="math_toolkit.perf.comparisons.comparison_to_gsl_1_9_and_cephes"></a><h5>
-<a name="id802743"></a>
+<a name="id803124"></a>
         <a href="comparisons.html#math_toolkit.perf.comparisons.comparison_to_gsl_1_9_and_cephes">Comparison
         to GSL-1.9 and Cephes</a>
       </h5>
@@ -213,7 +213,7 @@
 <td>
               <p>
                 +INF
- <sup>[<a name="id803110" href="#ftn.id803110">1</a>]</sup>
+ <sup>[<a name="id803491" href="#ftn.id803491">1</a>]</sup>
               </p>
               </td>
 </tr>
@@ -284,13 +284,13 @@
               </td>
 </tr>
 </tbody>
-<tbody class="footnotes"><tr><td colspan="4"><div class="footnote"><p><sup>[<a name="ftn.id803110" href="#id803110">1</a>] </sup>
+<tbody class="footnotes"><tr><td colspan="4"><div class="footnote"><p><sup>[<a name="ftn.id803491" href="#id803491">1</a>] </sup>
                     Cephes gets stuck in an infinite loop while trying to execute
                     our test cases.
                   </p></div></td></tr></tbody>
 </table></div>
 <a name="math_toolkit.perf.comparisons.comparison_to_the_r_statistical_library_on_windows"></a><h5>
-<a name="id803279"></a>
+<a name="id803660"></a>
         <a href="comparisons.html#math_toolkit.perf.comparisons.comparison_to_the_r_statistical_library_on_windows">Comparison
         to the R Statistical Library on Windows</a>
       </h5>
@@ -301,7 +301,7 @@
         appears not to be buildable with Visual C++).
       </p>
 <div class="table">
-<a name="id803306"></a><p class="title"><b>Table 50. A Comparison to the R Statistical Library on Windows
+<a name="id803688"></a><p class="title"><b>Table 50. A Comparison to the R Statistical Library on Windows
       XP</b></p>
 <div class="table-contents"><table class="table" summary="A Comparison to the R Statistical Library on Windows
       XP">
@@ -374,7 +374,7 @@
             <p>
               </p>
 <p>74.66
- <sup>[<a name="id803447" href="#ftn.id803447">1</a>]</sup>
+ <sup>[<a name="id803828" href="#ftn.id803828">1</a>]</sup>
               </p>
 <p> </p>
 <p>(4.905e-004s)</p>
@@ -792,7 +792,7 @@
             <p>
               </p>
 <p>53.59
- <sup>[<a name="id804296" href="#ftn.id804296">2</a>]</sup>
+ <sup>[<a name="id804677" href="#ftn.id804677">2</a>]</sup>
               </p>
 <p> </p>
 <p>(5.145e-004s)</p>
@@ -1010,12 +1010,12 @@
 </tr>
 </tbody>
 <tbody class="footnotes"><tr><td colspan="3">
-<div class="footnote"><p><sup>[<a name="ftn.id803447" href="#id803447">1</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id803828" href="#id803828">1</a>] </sup>
                   There are a small number of our test cases where the R library
                   fails to converge on a result: these tend to dominate the performance
                   result.
                 </p></div>
-<div class="footnote"><p><sup>[<a name="ftn.id804296" href="#id804296">2</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id804677" href="#id804677">2</a>] </sup>
                   The R library appears to use a linear-search strategy, that can
                   perform very badly in a small number of pathological cases, but
                   may or may not be more efficient in "typical" cases
@@ -1024,7 +1024,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="math_toolkit.perf.comparisons.comparison_to_the_r_statistical_library_on_linux"></a><h5>
-<a name="id804746"></a>
+<a name="id805127"></a>
         <a href="comparisons.html#math_toolkit.perf.comparisons.comparison_to_the_r_statistical_library_on_linux">Comparison
         to the R Statistical Library on Linux</a>
       </h5>
@@ -1033,7 +1033,7 @@
         Linux machine, with the test program and R-2.5.0 compiled with GNU G++ 4.2.0.
       </p>
 <div class="table">
-<a name="id804771"></a><p class="title"><b>Table 51. A Comparison to the R Statistical Library on Linux</b></p>
+<a name="id805152"></a><p class="title"><b>Table 51. A Comparison to the R Statistical Library on Linux</b></p>
 <div class="table-contents"><table class="table" summary="A Comparison to the R Statistical Library on Linux">
 <colgroup>
 <col>
@@ -1104,7 +1104,7 @@
             <p>
               </p>
 <p>44.06
- <sup>[<a name="id804910" href="#ftn.id804910">1</a>]</sup>
+ <sup>[<a name="id805292" href="#ftn.id805292">1</a>]</sup>
               </p>
 <p> </p>
 <p>(5.701e-004s)</p>
@@ -1522,7 +1522,7 @@
             <p>
               </p>
 <p>30.07
- <sup>[<a name="id805755" href="#ftn.id805755">2</a>]</sup>
+ <sup>[<a name="id806136" href="#ftn.id806136">2</a>]</sup>
               </p>
 <p> </p>
 <p>(5.490e-004s)</p>
@@ -1740,12 +1740,12 @@
 </tr>
 </tbody>
 <tbody class="footnotes"><tr><td colspan="3">
-<div class="footnote"><p><sup>[<a name="ftn.id804910" href="#id804910">1</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id805292" href="#id805292">1</a>] </sup>
                   There are a small number of our test cases where the R library
                   fails to converge on a result: these tend to dominate the performance
                   result.
                 </p></div>
-<div class="footnote"><p><sup>[<a name="ftn.id805755" href="#id805755">2</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id806136" href="#id806136">2</a>] </sup>
                   The R library appears to use a linear-search strategy, that can
                   perform very badly in a small number of pathological cases, but
                   may or may not be more efficient in "typical" cases

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/getting_best.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/getting_best.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/getting_best.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -33,7 +33,7 @@
         penalty for using the library in debug mode can be quite large.
       </p>
 <div class="table">
-<a name="id799698"></a><p class="title"><b>Table 46. Performance Comparison of Release and Debug Settings</b></p>
+<a name="id800086"></a><p class="title"><b>Table 46. Performance Comparison of Release and Debug Settings</b></p>
 <div class="table-contents"><table class="table" summary="Performance Comparison of Release and Debug Settings">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/tuning.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/tuning.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/tuning.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -234,7 +234,7 @@
         highly vectorisable processors in the future.
       </p>
 <div class="table">
-<a name="id801392"></a><p class="title"><b>Table 48. A Comparison of Polynomial Evaluation Methods</b></p>
+<a name="id801773"></a><p class="title"><b>Table 48. A Comparison of Polynomial Evaluation Methods</b></p>
 <div class="table-contents"><table class="table" summary="A Comparison of Polynomial Evaluation Methods">
 <colgroup>
 <col>
@@ -634,7 +634,7 @@
         tutorial</a>.
       </p>
 <div class="table">
-<a name="id802147"></a><p class="title"><b>Table 49. Performance Comparison with and Without Internal
+<a name="id802528"></a><p class="title"><b>Table 49. Performance Comparison with and Without Internal
       Promotion to long double</b></p>
 <div class="table-contents"><table class="table" summary="Performance Comparison with and Without Internal
       Promotion to long double">

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/discrete_quant_ref.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/discrete_quant_ref.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/discrete_quant_ref.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -55,7 +55,7 @@
           can take have the following meanings:
         </p>
 <a name="math_toolkit.policy.pol_ref.discrete_quant_ref.real"></a><h6>
-<a name="id789797"></a>
+<a name="id790180"></a>
           <a href="discrete_quant_ref.html#math_toolkit.policy.pol_ref.discrete_quant_ref.real">real</a>
         </h6>
 <p>
@@ -93,7 +93,7 @@
           <span class="special">=</span> <span class="number">68.1584</span></code>.
         </p>
 <a name="math_toolkit.policy.pol_ref.discrete_quant_ref.integer_round_outwards"></a><h6>
-<a name="id790284"></a>
+<a name="id790666"></a>
           <a href="discrete_quant_ref.html#math_toolkit.policy.pol_ref.discrete_quant_ref.integer_round_outwards">integer_round_outwards</a>
         </h6>
 <p>
@@ -151,7 +151,7 @@
           in each tail</em></span>.
         </p>
 <a name="math_toolkit.policy.pol_ref.discrete_quant_ref.integer_round_inwards"></a><h6>
-<a name="id790803"></a>
+<a name="id791185"></a>
           <a href="discrete_quant_ref.html#math_toolkit.policy.pol_ref.discrete_quant_ref.integer_round_inwards">integer_round_inwards</a>
         </h6>
 <p>
@@ -214,7 +214,7 @@
           in each tail</em></span>.
         </p>
 <a name="math_toolkit.policy.pol_ref.discrete_quant_ref.integer_round_down"></a><h6>
-<a name="id791456"></a>
+<a name="id791839"></a>
           <a href="discrete_quant_ref.html#math_toolkit.policy.pol_ref.discrete_quant_ref.integer_round_down">integer_round_down</a>
         </h6>
 <p>
@@ -222,7 +222,7 @@
           or a lower quantile.
         </p>
 <a name="math_toolkit.policy.pol_ref.discrete_quant_ref.integer_round_up"></a><h6>
-<a name="id791488"></a>
+<a name="id791870"></a>
           <a href="discrete_quant_ref.html#math_toolkit.policy.pol_ref.discrete_quant_ref.integer_round_up">integer_round_up</a>
         </h6>
 <p>
@@ -230,7 +230,7 @@
           a lower quantile.
         </p>
 <a name="math_toolkit.policy.pol_ref.discrete_quant_ref.integer_round_nearest"></a><h6>
-<a name="id791519"></a>
+<a name="id791902"></a>
           <a href="discrete_quant_ref.html#math_toolkit.policy.pol_ref.discrete_quant_ref.integer_round_nearest">integer_round_nearest</a>
         </h6>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/error_handling_policies.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/error_handling_policies.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/error_handling_policies.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -39,7 +39,7 @@
           </li>
 </ul></div>
 <a name="math_toolkit.policy.pol_ref.error_handling_policies.available_actions_when_an_error_is_raised"></a><h5>
-<a name="id784074"></a>
+<a name="id784456"></a>
           <a href="error_handling_policies.html#math_toolkit.policy.pol_ref.error_handling_policies.available_actions_when_an_error_is_raised">Available
           Actions When an Error is Raised</a>
         </h5>
@@ -62,7 +62,7 @@
           The various enumerated values have the following meanings:
         </p>
 <a name="math_toolkit.policy.pol_ref.error_handling_policies.throw_on_error"></a><h6>
-<a name="id784327"></a>
+<a name="id784708"></a>
           <a href="error_handling_policies.html#math_toolkit.policy.pol_ref.error_handling_policies.throw_on_error">throw_on_error</a>
         </h6>
 <p>
@@ -162,7 +162,7 @@
 </tbody>
 </table></div>
 <a name="math_toolkit.policy.pol_ref.error_handling_policies.errno_on_error"></a><h6>
-<a name="id784509"></a>
+<a name="id784891"></a>
           <a href="error_handling_policies.html#math_toolkit.policy.pol_ref.error_handling_policies.errno_on_error">errno_on_error</a>
         </h6>
 <p>
@@ -263,7 +263,7 @@
 </tbody>
 </table></div>
 <a name="math_toolkit.policy.pol_ref.error_handling_policies.ignore_error"></a><h6>
-<a name="id784708"></a>
+<a name="id785090"></a>
           <a href="error_handling_policies.html#math_toolkit.policy.pol_ref.error_handling_policies.ignore_error">ignore_error</a>
         </h6>
 <p>
@@ -364,7 +364,7 @@
 </tbody>
 </table></div>
 <a name="math_toolkit.policy.pol_ref.error_handling_policies.user_error"></a><h6>
-<a name="id784909"></a>
+<a name="id785291"></a>
           <a href="error_handling_policies.html#math_toolkit.policy.pol_ref.error_handling_policies.user_error">user_error</a>
         </h6>
 <p>
@@ -410,7 +410,7 @@
           here</a>.
         </p>
 <a name="math_toolkit.policy.pol_ref.error_handling_policies.kinds_of_error_raised"></a><h5>
-<a name="id785978"></a>
+<a name="id786360"></a>
           <a href="error_handling_policies.html#math_toolkit.policy.pol_ref.error_handling_policies.kinds_of_error_raised">Kinds
           of Error Raised</a>
         </h5>
@@ -624,7 +624,7 @@
 </tbody>
 </table></div>
 <a name="math_toolkit.policy.pol_ref.error_handling_policies.examples"></a><h5>
-<a name="id786983"></a>
+<a name="id787365"></a>
           <a href="error_handling_policies.html#math_toolkit.policy.pol_ref.error_handling_policies.examples">Examples</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/internal_promotion.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/internal_promotion.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/internal_promotion.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -84,7 +84,7 @@
 </tbody>
 </table></div>
 <a name="math_toolkit.policy.pol_ref.internal_promotion.examples"></a><h5>
-<a name="id788298"></a>
+<a name="id788680"></a>
           <a href="internal_promotion.html#math_toolkit.policy.pol_ref.internal_promotion.examples">Examples</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/policy_defaults.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/policy_defaults.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/policy_defaults.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -61,7 +61,7 @@
           then you can do so by defining various macros in boost/math/tools/user.hpp.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_domain_error_policy"></a><h6>
-<a name="id793322"></a>
+<a name="id793704"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_domain_error_policy">BOOST_MATH_DOMAIN_ERROR_POLICY</a>
         </h6>
 <p>
@@ -71,7 +71,7 @@
           <code class="computeroutput"><span class="identifier">ignore_error</span></code> or <code class="computeroutput"><span class="identifier">user_error</span></code>.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_pole_error_policy"></a><h6>
-<a name="id793415"></a>
+<a name="id793797"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_pole_error_policy">BOOST_MATH_POLE_ERROR_POLICY</a>
         </h6>
 <p>
@@ -81,7 +81,7 @@
           <code class="computeroutput"><span class="identifier">ignore_error</span></code> or <code class="computeroutput"><span class="identifier">user_error</span></code>.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_overflow_error_policy"></a><h6>
-<a name="id793507"></a>
+<a name="id793889"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_overflow_error_policy">BOOST_MATH_OVERFLOW_ERROR_POLICY</a>
         </h6>
 <p>
@@ -91,7 +91,7 @@
           <code class="computeroutput"><span class="identifier">ignore_error</span></code> or <code class="computeroutput"><span class="identifier">user_error</span></code>.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_rounding_error_policy"></a><h6>
-<a name="id793600"></a>
+<a name="id793982"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_rounding_error_policy">BOOST_MATH_ROUNDING_ERROR_POLICY</a>
         </h6>
 <p>
@@ -101,7 +101,7 @@
           <code class="computeroutput"><span class="identifier">ignore_error</span></code> or <code class="computeroutput"><span class="identifier">user_error</span></code>.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_evaluation_error_policy"></a><h6>
-<a name="id793693"></a>
+<a name="id794075"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_evaluation_error_policy">BOOST_MATH_EVALUATION_ERROR_POLICY</a>
         </h6>
 <p>
@@ -111,7 +111,7 @@
           <code class="computeroutput"><span class="identifier">ignore_error</span></code> or <code class="computeroutput"><span class="identifier">user_error</span></code>.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_underflow_error_policy"></a><h6>
-<a name="id793786"></a>
+<a name="id794168"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_underflow_error_policy">BOOST_MATH_UNDERFLOW_ERROR_POLICY</a>
         </h6>
 <p>
@@ -121,7 +121,7 @@
           <code class="computeroutput"><span class="identifier">ignore_error</span></code> or <code class="computeroutput"><span class="identifier">user_error</span></code>.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_denorm_error_policy"></a><h6>
-<a name="id793879"></a>
+<a name="id794261"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_denorm_error_policy">BOOST_MATH_DENORM_ERROR_POLICY</a>
         </h6>
 <p>
@@ -131,7 +131,7 @@
           <code class="computeroutput"><span class="identifier">ignore_error</span></code> or <code class="computeroutput"><span class="identifier">user_error</span></code>.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_digits10_policy"></a><h6>
-<a name="id793971"></a>
+<a name="id794353"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_digits10_policy">BOOST_MATH_DIGITS10_POLICY</a>
         </h6>
 <p>
@@ -142,7 +142,7 @@
           recommended that you change this from the default.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_promote_float_policy"></a><h6>
-<a name="id794020"></a>
+<a name="id794402"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_promote_float_policy">BOOST_MATH_PROMOTE_FLOAT_POLICY</a>
         </h6>
 <p>
@@ -154,7 +154,7 @@
           off.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_promote_double_policy"></a><h6>
-<a name="id794112"></a>
+<a name="id794494"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_promote_double_policy">BOOST_MATH_PROMOTE_DOUBLE_POLICY</a>
         </h6>
 <p>
@@ -166,7 +166,7 @@
           off.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_discrete_quantile_policy"></a><h6>
-<a name="id794211"></a>
+<a name="id794592"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_discrete_quantile_policy">BOOST_MATH_DISCRETE_QUANTILE_POLICY</a>
         </h6>
 <p>
@@ -177,7 +177,7 @@
           Defaults to <code class="computeroutput"><span class="identifier">integer_round_outwards</span></code>.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_assert_undefined_policy"></a><h6>
-<a name="id794328"></a>
+<a name="id794709"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_assert_undefined_policy">BOOST_MATH_ASSERT_UNDEFINED_POLICY</a>
         </h6>
 <p>
@@ -190,7 +190,7 @@
           whether or not a particular property is well defined.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_max_series_iteration_policy"></a><h6>
-<a name="id794393"></a>
+<a name="id794773"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_max_series_iteration_policy">BOOST_MATH_MAX_SERIES_ITERATION_POLICY</a>
         </h6>
 <p>
@@ -199,7 +199,7 @@
           Defaults to 1000000.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_max_root_iteration_policy"></a><h6>
-<a name="id794435"></a>
+<a name="id794815"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_max_root_iteration_policy">BOOST_MATH_MAX_ROOT_ITERATION_POLICY</a>
         </h6>
 <p>
@@ -208,7 +208,7 @@
           Defaults to 200.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.example"></a><h6>
-<a name="id794476"></a>
+<a name="id794857"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.example">Example</a>
         </h6>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/understand_dis_quant.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/understand_dis_quant.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/understand_dis_quant.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -177,7 +177,7 @@
           <span class="emphasis"><em>base your comparisons on CDF's instead</em></span>.
         </p>
 <a name="math_toolkit.policy.pol_tutorial.understand_dis_quant.other_rounding_policies_are_available"></a><h6>
-<a name="id780576"></a>
+<a name="id780971"></a>
           <a href="understand_dis_quant.html#math_toolkit.policy.pol_tutorial.understand_dis_quant.other_rounding_policies_are_available">Other
           Rounding Policies are Available</a>
         </h6>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -149,7 +149,7 @@
 <dt><span class="section"><a href="special/rounding/modf.html"> Integer and Fractional
         Part Splitting (modf)</a></span></dt>
 </dl></dd>
-<dt><span class="section"><a href="special/fpclass.html"> Floating Point Classification:
+<dt><span class="section"><a href="special/fpclass.html"> Floating-Point Classification:
       Infinities and NaN's</a></span></dt>
 </dl></div>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/bessel.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/bessel.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/bessel.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -28,7 +28,7 @@
         of the First and Second Kinds</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.bessel.bessel.synopsis"></a><h5>
-<a name="id682628"></a>
+<a name="id682793"></a>
           <a href="bessel.html#math_toolkit.special.bessel.bessel.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">&gt;</span>
@@ -44,7 +44,7 @@
 <a href="../../main_overview/result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">cyl_neumann</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a href="../../policy.html" title="Policies">Policy</a><span class="special">&amp;);</span>
 </pre>
 <a name="math_toolkit.special.bessel.bessel.description"></a><h5>
-<a name="id683136"></a>
+<a name="id683301"></a>
           <a href="bessel.html#math_toolkit.special.bessel.bessel.description">Description</a>
         </h5>
 <p>
@@ -110,7 +110,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/cyl_neumann.png" align="middle"></span>
         </p>
 <a name="math_toolkit.special.bessel.bessel.testing"></a><h5>
-<a name="id683537"></a>
+<a name="id683702"></a>
           <a href="bessel.html#math_toolkit.special.bessel.bessel.testing">Testing</a>
         </h5>
 <p>
@@ -119,7 +119,7 @@
           (with all the special case handling removed).
         </p>
 <a name="math_toolkit.special.bessel.bessel.accuracy"></a><h5>
-<a name="id683576"></a>
+<a name="id683741"></a>
           <a href="bessel.html#math_toolkit.special.bessel.bessel.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -135,7 +135,7 @@
           zero error</a>. All values are relative errors in units of epsilon.
         </p>
 <div class="table">
-<a name="id683632"></a><p class="title"><b>Table 35. Errors Rates in cyl_bessel_j</b></p>
+<a name="id683798"></a><p class="title"><b>Table 35. Errors Rates in cyl_bessel_j</b></p>
 <div class="table-contents"><table class="table" summary="Errors Rates in cyl_bessel_j">
 <colgroup>
 <col>
@@ -304,7 +304,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id683937"></a><p class="title"><b>Table 36. Errors Rates in cyl_neumann</b></p>
+<a name="id684102"></a><p class="title"><b>Table 36. Errors Rates in cyl_neumann</b></p>
 <div class="table-contents"><table class="table" summary="Errors Rates in cyl_neumann">
 <colgroup>
 <col>
@@ -494,7 +494,7 @@
           were found.
         </p>
 <a name="math_toolkit.special.bessel.bessel.implementation"></a><h5>
-<a name="id688639"></a>
+<a name="id688792"></a>
           <a href="bessel.html#math_toolkit.special.bessel.bessel.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/bessel_over.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/bessel_over.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/bessel_over.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -28,7 +28,7 @@
         Overview</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.bessel.bessel_over.ordinary_bessel_functions"></a><h5>
-<a name="id681639"></a>
+<a name="id681804"></a>
           <a href="bessel_over.html#math_toolkit.special.bessel.bessel_over.ordinary_bessel_functions">Ordinary
           Bessel Functions</a>
         </h5>
@@ -103,7 +103,7 @@
           <span class="inlinemediaobject"><img src="../../../../equations/bessel10.png"></span>
         </p>
 <a name="math_toolkit.special.bessel.bessel_over.modified_bessel_functions"></a><h5>
-<a name="id682056"></a>
+<a name="id682221"></a>
           <a href="bessel_over.html#math_toolkit.special.bessel.bessel_over.modified_bessel_functions">Modified
           Bessel Functions</a>
         </h5>
@@ -167,7 +167,7 @@
           <span class="inlinemediaobject"><img src="../../../../equations/mbessel10.png"></span>
         </p>
 <a name="math_toolkit.special.bessel.bessel_over.spherical_bessel_functions"></a><h5>
-<a name="id682452"></a>
+<a name="id682617"></a>
           <a href="bessel_over.html#math_toolkit.special.bessel.bessel_over.spherical_bessel_functions">Spherical
           Bessel Functions</a>
         </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/mbessel.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/mbessel.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/mbessel.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -28,7 +28,7 @@
         Functions of the First and Second Kinds</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.bessel.mbessel.synopsis"></a><h5>
-<a name="id689427"></a>
+<a name="id689580"></a>
           <a href="mbessel.html#math_toolkit.special.bessel.mbessel.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">&gt;</span>
@@ -44,7 +44,7 @@
 <a href="../../main_overview/result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">cyl_bessel_k</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a href="../../policy.html" title="Policies">Policy</a><span class="special">&amp;);</span>
 </pre>
 <a name="math_toolkit.special.bessel.mbessel.description"></a><h5>
-<a name="id689937"></a>
+<a name="id690090"></a>
           <a href="mbessel.html#math_toolkit.special.bessel.mbessel.description">Description</a>
         </h5>
 <p>
@@ -109,7 +109,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/cyl_bessel_k.png" align="middle"></span>
         </p>
 <a name="math_toolkit.special.bessel.mbessel.testing"></a><h5>
-<a name="id690326"></a>
+<a name="id690479"></a>
           <a href="mbessel.html#math_toolkit.special.bessel.mbessel.testing">Testing</a>
         </h5>
 <p>
@@ -118,7 +118,7 @@
           (with all the special case handling removed).
         </p>
 <a name="math_toolkit.special.bessel.mbessel.accuracy"></a><h5>
-<a name="id690365"></a>
+<a name="id690518"></a>
           <a href="mbessel.html#math_toolkit.special.bessel.mbessel.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -129,7 +129,7 @@
           zero error</a>. All values are relative errors in units of epsilon.
         </p>
 <div class="table">
-<a name="id690405"></a><p class="title"><b>Table 37. Errors Rates in cyl_bessel_i</b></p>
+<a name="id690558"></a><p class="title"><b>Table 37. Errors Rates in cyl_bessel_i</b></p>
 <div class="table-contents"><table class="table" summary="Errors Rates in cyl_bessel_i">
 <colgroup>
 <col>
@@ -226,7 +226,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id690560"></a><p class="title"><b>Table 38. Errors Rates in cyl_bessel_k</b></p>
+<a name="id690713"></a><p class="title"><b>Table 38. Errors Rates in cyl_bessel_k</b></p>
 <div class="table-contents"><table class="table" summary="Errors Rates in cyl_bessel_k">
 <colgroup>
 <col>
@@ -326,7 +326,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="math_toolkit.special.bessel.mbessel.implementation"></a><h5>
-<a name="id690728"></a>
+<a name="id690881"></a>
           <a href="mbessel.html#math_toolkit.special.bessel.mbessel.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/sph_bessel.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/sph_bessel.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/sph_bessel.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -28,7 +28,7 @@
         Bessel Functions of the First and Second Kinds</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.bessel.sph_bessel.synopsis"></a><h5>
-<a name="id691406"></a>
+<a name="id691559"></a>
           <a href="sph_bessel.html#math_toolkit.special.bessel.sph_bessel.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">&gt;</span>
@@ -44,7 +44,7 @@
 <a href="../../main_overview/result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">sph_neumann</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a href="../../policy.html" title="Policies">Policy</a><span class="special">&amp;);</span>
 </pre>
 <a name="math_toolkit.special.bessel.sph_bessel.description"></a><h5>
-<a name="id691915"></a>
+<a name="id692068"></a>
           <a href="sph_bessel.html#math_toolkit.special.bessel.sph_bessel.description">Description</a>
         </h5>
 <p>
@@ -97,7 +97,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/sph_neumann.png" align="middle"></span>
         </p>
 <a name="math_toolkit.special.bessel.sph_bessel.testing"></a><h5>
-<a name="id692195"></a>
+<a name="id692348"></a>
           <a href="sph_bessel.html#math_toolkit.special.bessel.sph_bessel.testing">Testing</a>
         </h5>
 <p>
@@ -106,7 +106,7 @@
           implementation (with all the special case handling removed).
         </p>
 <a name="math_toolkit.special.bessel.sph_bessel.accuracy"></a><h5>
-<a name="id692234"></a>
+<a name="id692387"></a>
           <a href="sph_bessel.html#math_toolkit.special.bessel.sph_bessel.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -116,7 +116,7 @@
           refer to these functions for accuracy data.
         </p>
 <a name="math_toolkit.special.bessel.sph_bessel.implementation"></a><h5>
-<a name="id692284"></a>
+<a name="id692437"></a>
           <a href="sph_bessel.html#math_toolkit.special.bessel.sph_bessel.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_1.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_1.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_1.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -28,7 +28,7 @@
         of the First Kind - Legendre Form</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.ellint.ellint_1.synopsis"></a><h6>
-<a name="id697975"></a>
+<a name="id698129"></a>
           <a href="ellint_1.html#math_toolkit.special.ellint.ellint_1.synopsis">Synopsis</a>
         </h6>
 <p>
@@ -55,7 +55,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.ellint.ellint_1.description"></a><h6>
-<a name="id698538"></a>
+<a name="id698692"></a>
           <a href="ellint_1.html#math_toolkit.special.ellint.ellint_1.description">Description</a>
         </h6>
 <p>
@@ -123,7 +123,7 @@
 <p>
         </p>
 <a name="math_toolkit.special.ellint.ellint_1.accuracy"></a><h6>
-<a name="id699197"></a>
+<a name="id699351"></a>
           <a href="ellint_1.html#math_toolkit.special.ellint.ellint_1.accuracy">Accuracy</a>
         </h6>
 <p>
@@ -134,7 +134,7 @@
           All values are relative errors in units of epsilon.
         </p>
 <div class="table">
-<a name="id699231"></a><p class="title"><b>Table 40. Errors Rates in the Elliptic Integrals of the
+<a name="id699385"></a><p class="title"><b>Table 40. Errors Rates in the Elliptic Integrals of the
         First Kind</b></p>
 <div class="table-contents"><table class="table" summary="Errors Rates in the Elliptic Integrals of the
         First Kind">
@@ -237,7 +237,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="math_toolkit.special.ellint.ellint_1.testing"></a><h6>
-<a name="id699393"></a>
+<a name="id699547"></a>
           <a href="ellint_1.html#math_toolkit.special.ellint.ellint_1.testing">Testing</a>
         </h6>
 <p>
@@ -247,7 +247,7 @@
           this implementation.
         </p>
 <a name="math_toolkit.special.ellint.ellint_1.implementation"></a><h6>
-<a name="id699432"></a>
+<a name="id699587"></a>
           <a href="ellint_1.html#math_toolkit.special.ellint.ellint_1.implementation">Implementation</a>
         </h6>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_2.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_2.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_2.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -28,7 +28,7 @@
         of the Second Kind - Legendre Form</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.ellint.ellint_2.synopsis"></a><h6>
-<a name="id699548"></a>
+<a name="id699703"></a>
           <a href="ellint_2.html#math_toolkit.special.ellint.ellint_2.synopsis">Synopsis</a>
         </h6>
 <p>
@@ -55,7 +55,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.ellint.ellint_2.description"></a><h6>
-<a name="id700110"></a>
+<a name="id700264"></a>
           <a href="ellint_2.html#math_toolkit.special.ellint.ellint_2.description">Description</a>
         </h6>
 <p>
@@ -123,7 +123,7 @@
 <p>
         </p>
 <a name="math_toolkit.special.ellint.ellint_2.accuracy"></a><h6>
-<a name="id700769"></a>
+<a name="id700923"></a>
           <a href="ellint_2.html#math_toolkit.special.ellint.ellint_2.accuracy">Accuracy</a>
         </h6>
 <p>
@@ -134,7 +134,7 @@
           All values are relative errors in units of epsilon.
         </p>
 <div class="table">
-<a name="id700802"></a><p class="title"><b>Table 41. Errors Rates in the Elliptic Integrals of the
+<a name="id700956"></a><p class="title"><b>Table 41. Errors Rates in the Elliptic Integrals of the
         Second Kind</b></p>
 <div class="table-contents"><table class="table" summary="Errors Rates in the Elliptic Integrals of the
         Second Kind">
@@ -237,7 +237,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="math_toolkit.special.ellint.ellint_2.testing"></a><h6>
-<a name="id700965"></a>
+<a name="id701119"></a>
           <a href="ellint_2.html#math_toolkit.special.ellint.ellint_2.testing">Testing</a>
         </h6>
 <p>
@@ -247,7 +247,7 @@
           this implementation.
         </p>
 <a name="math_toolkit.special.ellint.ellint_2.implementation"></a><h6>
-<a name="id701004"></a>
+<a name="id701158"></a>
           <a href="ellint_2.html#math_toolkit.special.ellint.ellint_2.implementation">Implementation</a>
         </h6>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_3.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_3.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_3.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -28,7 +28,7 @@
         of the Third Kind - Legendre Form</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.ellint.ellint_3.synopsis"></a><h6>
-<a name="id701120"></a>
+<a name="id701274"></a>
           <a href="ellint_3.html#math_toolkit.special.ellint.ellint_3.synopsis">Synopsis</a>
         </h6>
 <p>
@@ -55,7 +55,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.ellint.ellint_3.description"></a><h6>
-<a name="id701819"></a>
+<a name="id701973"></a>
           <a href="ellint_3.html#math_toolkit.special.ellint.ellint_3.description">Description</a>
         </h6>
 <p>
@@ -135,7 +135,7 @@
           [opitonal_policy]
         </p>
 <a name="math_toolkit.special.ellint.ellint_3.accuracy"></a><h6>
-<a name="id702662"></a>
+<a name="id702817"></a>
           <a href="ellint_3.html#math_toolkit.special.ellint.ellint_3.accuracy">Accuracy</a>
         </h6>
 <p>
@@ -146,7 +146,7 @@
           All values are relative errors in units of epsilon.
         </p>
 <div class="table">
-<a name="id702696"></a><p class="title"><b>Table 42. Errors Rates in the Elliptic Integrals of the
+<a name="id702851"></a><p class="title"><b>Table 42. Errors Rates in the Elliptic Integrals of the
         Third Kind</b></p>
 <div class="table-contents"><table class="table" summary="Errors Rates in the Elliptic Integrals of the
         Third Kind">
@@ -249,7 +249,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="math_toolkit.special.ellint.ellint_3.testing"></a><h6>
-<a name="id702859"></a>
+<a name="id703014"></a>
           <a href="ellint_3.html#math_toolkit.special.ellint.ellint_3.testing">Testing</a>
         </h6>
 <p>
@@ -259,7 +259,7 @@
           this implementation.
         </p>
 <a name="math_toolkit.special.ellint.ellint_3.implementation"></a><h6>
-<a name="id702898"></a>
+<a name="id703052"></a>
           <a href="ellint_3.html#math_toolkit.special.ellint.ellint_3.implementation">Implementation</a>
         </h6>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_carlson.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_carlson.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_carlson.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -28,7 +28,7 @@
         Integrals - Carlson Form</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.ellint.ellint_carlson.synopsis"></a><h6>
-<a name="id693855"></a>
+<a name="id694009"></a>
           <a href="ellint_carlson.html#math_toolkit.special.ellint.ellint_carlson.synopsis">Synopsis</a>
         </h6>
 <p>
@@ -100,7 +100,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.ellint.ellint_carlson.description"></a><h6>
-<a name="id695626"></a>
+<a name="id695779"></a>
           <a href="ellint_carlson.html#math_toolkit.special.ellint.ellint_carlson.description">Description</a>
         </h6>
 <p>
@@ -236,7 +236,7 @@
           <span class="inlinemediaobject"><img src="../../../../equations/ellint18.png"></span>
         </p>
 <a name="math_toolkit.special.ellint.ellint_carlson.testing"></a><h6>
-<a name="id697394"></a>
+<a name="id697548"></a>
           <a href="ellint_carlson.html#math_toolkit.special.ellint.ellint_carlson.testing">Testing</a>
         </h6>
 <p>
@@ -265,7 +265,7 @@
           to verify their correctness: see the above Carlson paper for details.
         </p>
 <a name="math_toolkit.special.ellint.ellint_carlson.accuracy"></a><h6>
-<a name="id697464"></a>
+<a name="id697618"></a>
           <a href="ellint_carlson.html#math_toolkit.special.ellint.ellint_carlson.accuracy">Accuracy</a>
         </h6>
 <p>
@@ -276,7 +276,7 @@
           All values are relative errors in units of epsilon.
         </p>
 <div class="table">
-<a name="id697499"></a><p class="title"><b>Table 39. Errors Rates in the Carlson Elliptic Integrals</b></p>
+<a name="id697653"></a><p class="title"><b>Table 39. Errors Rates in the Carlson Elliptic Integrals</b></p>
 <div class="table-contents"><table class="table" summary="Errors Rates in the Carlson Elliptic Integrals">
 <colgroup>
 <col>
@@ -419,7 +419,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="math_toolkit.special.ellint.ellint_carlson.implementation"></a><h6>
-<a name="id697730"></a>
+<a name="id697884"></a>
           <a href="ellint_carlson.html#math_toolkit.special.ellint.ellint_carlson.implementation">Implementation</a>
         </h6>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_intro.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_intro.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_intro.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -61,14 +61,14 @@
           Elliptic integral</a>.
         </p>
 <a name="math_toolkit.special.ellint.ellint_intro.notation"></a><h5>
-<a name="id692512"></a>
+<a name="id692665"></a>
           <a href="ellint_intro.html#math_toolkit.special.ellint.ellint_intro.notation">Notation</a>
         </h5>
 <p>
           All variables are real numbers unless otherwise noted.
         </p>
 <a name="ellint_def"></a><a name="math_toolkit.special.ellint.ellint_intro.definition"></a><h5>
-<a name="id692549"></a>
+<a name="id692702"></a>
           <a href="ellint_intro.html#math_toolkit.special.ellint.ellint_intro.definition">Definition</a>
         </h5>
 <p>
@@ -257,7 +257,7 @@
 </td></tr>
 </table></div>
 <a name="ellint_theorem"></a><a name="math_toolkit.special.ellint.ellint_intro.duplication_theorem"></a><h5>
-<a name="id693304"></a>
+<a name="id693458"></a>
           <a href="ellint_intro.html#math_toolkit.special.ellint.ellint_intro.duplication_theorem">Duplication
           Theorem</a>
         </h5>
@@ -269,7 +269,7 @@
           <span class="inlinemediaobject"><img src="../../../../equations/ellint13.png"></span>
         </p>
 <a name="ellint_formula"></a><a name="math_toolkit.special.ellint.ellint_intro.carlson_s_formulas"></a><h5>
-<a name="id693379"></a>
+<a name="id693533"></a>
           <a href="ellint_intro.html#math_toolkit.special.ellint.ellint_intro.carlson_s_formulas">Carlson's
           Formulas</a>
         </h5>
@@ -287,7 +287,7 @@
           <span class="inlinemediaobject"><img src="../../../../equations/ellint15.png"></span>
         </p>
 <a name="math_toolkit.special.ellint.ellint_intro.numerical_algorithms"></a><h5>
-<a name="id693474"></a>
+<a name="id693627"></a>
           <a href="ellint_intro.html#math_toolkit.special.ellint.ellint_intro.numerical_algorithms">Numerical
           Algorithms</a>
         </h5>
@@ -301,7 +301,7 @@
           integrals with satisfactory precisions.
         </p>
 <a name="ellint_refs"></a><a name="math_toolkit.special.ellint.ellint_intro.references"></a><h5>
-<a name="id693536"></a>
+<a name="id693689"></a>
           <a href="ellint_intro.html#math_toolkit.special.ellint.ellint_intro.references">References</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/fpclass.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/fpclass.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/fpclass.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -1,7 +1,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Floating Point Classification: Infinities and NaN's</title>
+<title>Floating-Point Classification: Infinities and NaN's</title>
 <link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
 <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
 <link rel="start" href="../../index.html" title="Math Toolkit">
@@ -24,11 +24,11 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="math_toolkit.special.fpclass"></a><a href="fpclass.html" title="Floating Point Classification: Infinities and NaN's"> Floating Point Classification:
+<a name="math_toolkit.special.fpclass"></a><a href="fpclass.html" title="Floating-Point Classification: Infinities and NaN's"> Floating-Point Classification:
       Infinities and NaN's</a>
 </h3></div></div></div>
 <a name="math_toolkit.special.fpclass.synopsis"></a><h5>
-<a name="id719333"></a>
+<a name="id719474"></a>
         <a href="fpclass.html#math_toolkit.special.fpclass.synopsis">Synopsis</a>
       </h5>
 <pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">FP_ZERO</span> <span class="comment">/* implementation specific value */</span>
@@ -41,19 +41,24 @@
 <span class="keyword">int</span> <span class="identifier">fpclassify</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">t</span><span class="special">);</span>
 
 <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
-<span class="keyword">bool</span> <span class="identifier">isfinite</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">);</span>
-
+<span class="keyword">bool</span> <span class="identifier">isfinite</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">);</span> <span class="comment">// Neither infinity nor NaN.
+</span>
 <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
-<span class="keyword">bool</span> <span class="identifier">isinf</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">t</span><span class="special">);</span>
-
+<span class="keyword">bool</span> <span class="identifier">isinf</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">t</span><span class="special">);</span> <span class="comment">// Infinity (+ or -).
+</span>
 <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
-<span class="keyword">bool</span> <span class="identifier">isnan</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">t</span><span class="special">);</span>
-
+<span class="keyword">bool</span> <span class="identifier">isnan</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">t</span><span class="special">);</span> <span class="comment">// NaN.
+</span>
 <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
-<span class="keyword">bool</span> <span class="identifier">isnormal</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">t</span><span class="special">);</span>
+<span class="keyword">bool</span> <span class="identifier">isnormal</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">t</span><span class="special">);</span> <span class="comment">// isfinite and not denormalised.
+</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">\</span><span class="identifier">math</span><span class="special">\</span><span class="identifier">special_functions</span><span class="special">\</span><span class="identifier">fpclassify</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
+<p>
+ to use these functions.
+ </p>
 <a name="math_toolkit.special.fpclass.description"></a><h5>
-<a name="id719773"></a>
+<a name="id720008"></a>
         <a href="fpclass.html#math_toolkit.special.fpclass.description">Description</a>
       </h5>
 <p>
@@ -83,9 +88,18 @@
 </span><span class="comment">// As above but with namespace qualification.
 </span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">isnan</span><span class="special">)(</span><span class="identifier">z</span><span class="special">);</span>
 <span class="comment">//
-</span><span class="comment">// This will cause a compiler error is isnan is a native macro:
+</span><span class="comment">// This will cause a compiler error if isnan is a native macro:
 </span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">isnan</span><span class="special">(</span><span class="identifier">z</span><span class="special">);</span>
-<span class="comment">// So always use (boost::math::isnan)(z); instead.
+<span class="comment">// So always use instead:
+</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">isnan</span><span class="special">)(</span><span class="identifier">z</span><span class="special">);</span>
+<span class="comment">//
+</span><span class="comment">// You can also add a using statment,
+</span><span class="comment">// globally to a .cpp file, or to a local function in a .hpp file.
+</span><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">isnan</span><span class="special">;</span>
+<span class="comment">// so you can write the shorter and less cluttered
+</span><span class="special">(</span><span class="identifier">isnan</span><span class="special">)(</span><span class="identifier">z</span><span class="special">)</span>
+<span class="comment">// But, as above, if isnan is a native macro, this causes a compiler error,
+</span><span class="comment">// because the macro always 'gets' the name first, unless enclosed in () brackets.
 </span></pre>
 <p>
         Detailed descriptions for each of these functions follows:
@@ -193,7 +207,7 @@
 <span class="keyword">bool</span> <span class="identifier">isnan</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">t</span><span class="special">);</span>
 </pre>
 <p>
- Returns true only if <span class="emphasis"><em>z</em></span> is a NaN.
+ Returns true only if <span class="emphasis"><em>z</em></span> is a NaN.
       </p>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
 <span class="keyword">bool</span> <span class="identifier">isnormal</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">t</span><span class="special">);</span>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/cbrt.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/cbrt.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/cbrt.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -71,7 +71,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/cbrt.png" align="middle"></span>
         </p>
 <a name="math_toolkit.special.powers.cbrt.accuracy"></a><h5>
-<a name="id709131"></a>
+<a name="id709273"></a>
           <a href="cbrt.html#math_toolkit.special.powers.cbrt.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -79,7 +79,7 @@
           should have approximately 2 epsilon accuracy.
         </p>
 <a name="math_toolkit.special.powers.cbrt.testing"></a><h5>
-<a name="id709172"></a>
+<a name="id709314"></a>
           <a href="cbrt.html#math_toolkit.special.powers.cbrt.testing">Testing</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/expm1.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/expm1.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/expm1.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -80,7 +80,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/expm1.png" align="middle"></span>
         </p>
 <a name="math_toolkit.special.powers.expm1.accuracy"></a><h5>
-<a name="id708631"></a>
+<a name="id708773"></a>
           <a href="expm1.html#math_toolkit.special.powers.expm1.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -88,7 +88,7 @@
           should have approximately 1 epsilon accuracy.
         </p>
 <a name="math_toolkit.special.powers.expm1.testing"></a><h5>
-<a name="id708672"></a>
+<a name="id708814"></a>
           <a href="expm1.html#math_toolkit.special.powers.expm1.testing">Testing</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/hypot.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/hypot.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/hypot.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -58,7 +58,7 @@
           representable.
         </p>
 <a name="math_toolkit.special.powers.hypot.implementation"></a><h5>
-<a name="id710713"></a>
+<a name="id710855"></a>
           <a href="hypot.html#math_toolkit.special.powers.hypot.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/log1p.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/log1p.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/log1p.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -93,7 +93,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/log1p.png" align="middle"></span>
         </p>
 <a name="math_toolkit.special.powers.log1p.accuracy"></a><h5>
-<a name="id708035"></a>
+<a name="id708178"></a>
           <a href="log1p.html#math_toolkit.special.powers.log1p.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -101,7 +101,7 @@
           should have approximately 1 epsilon accuracy.
         </p>
 <a name="math_toolkit.special.powers.log1p.testing"></a><h5>
-<a name="id708076"></a>
+<a name="id708218"></a>
           <a href="log1p.html#math_toolkit.special.powers.log1p.testing">Testing</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/powm1.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/powm1.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/powm1.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -74,14 +74,14 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/powm1.png" align="middle"></span>
         </p>
 <a name="math_toolkit.special.powers.powm1.accuracy"></a><h5>
-<a name="id710274"></a>
+<a name="id710416"></a>
           <a href="powm1.html#math_toolkit.special.powers.powm1.accuracy">Accuracy</a>
         </h5>
 <p>
           Should have approximately 2-3 epsilon accuracy.
         </p>
 <a name="math_toolkit.special.powers.powm1.testing"></a><h5>
-<a name="id710303"></a>
+<a name="id710445"></a>
           <a href="powm1.html#math_toolkit.special.powers.powm1.testing">Testing</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/sqrt1pm1.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/sqrt1pm1.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/sqrt1pm1.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -76,7 +76,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/sqrt1pm1.png" align="middle"></span>
         </p>
 <a name="math_toolkit.special.powers.sqrt1pm1.accuracy"></a><h5>
-<a name="id709705"></a>
+<a name="id709847"></a>
           <a href="sqrt1pm1.html#math_toolkit.special.powers.sqrt1pm1.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -84,7 +84,7 @@
           should have approximately 3 epsilon accuracy.
         </p>
 <a name="math_toolkit.special.powers.sqrt1pm1.testing"></a><h5>
-<a name="id709747"></a>
+<a name="id709889"></a>
           <a href="sqrt1pm1.html#math_toolkit.special.powers.sqrt1pm1.testing">Testing</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_erf/error_function.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_erf/error_function.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_erf/error_function.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -572,22 +572,18 @@
 <p>
           For <code class="computeroutput"><span class="identifier">z</span> <span class="special">&lt;=</span>
           <span class="number">0.5</span></code> then a rational approximation
- to erf is used, based on the observation that:
+ to erf is used, based on the observation that erf is an odd function and
+ therefore erf is calculated using:
         </p>
-<pre class="programlisting"><span class="identifier">erf</span><span class="special">(</span><span class="identifier">z</span><span class="special">)/</span><span class="identifier">z</span> <span class="special">~</span> <span class="number">1.12</span><span class="special">....</span>
+<pre class="programlisting"><span class="identifier">erf</span><span class="special">(</span><span class="identifier">z</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">z</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">C</span> <span class="special">+</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">z</span><span class="special">*</span><span class="identifier">z</span><span class="special">));</span>
 </pre>
 <p>
- Therefore erf is calculated using:
- </p>
-<pre class="programlisting"><span class="identifier">erf</span><span class="special">(</span><span class="identifier">z</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">z</span> <span class="special">*</span> <span class="special">(</span><span class="number">1.125F</span> <span class="special">+</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">z</span><span class="special">));</span>
-</pre>
-<p>
- where the rational approximation R(z) is optimised for absolute error:
- as long as its absolute error is small enough compared to 1.125, then any
- round-off error incurred during the computation of R(z) will effectively
- disappear from the result. As a result the error for erf and erfc in this
- region is very low: the last bit is incorrect in only a very small number
- of cases.
+ where the rational approximation R(z*z) is optimised for absolute error:
+ as long as its absolute error is small enough compared to the constant
+ C, then any round-off error incurred during the computation of R(z*z) will
+ effectively disappear from the result. As a result the error for erf and
+ erfc in this region is very low: the last bit is incorrect in only a very
+ small number of cases.
         </p>
 <p>
           For <code class="computeroutput"><span class="identifier">z</span> <span class="special">&gt;</span>
@@ -603,18 +599,27 @@
           Therefore for <code class="computeroutput"><span class="identifier">z</span> <span class="special">&gt;</span>
           <span class="number">0.5</span></code> we calculate erfc using:
         </p>
-<pre class="programlisting"><span class="identifier">erfc</span><span class="special">(</span><span class="identifier">z</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">exp</span><span class="special">(-</span><span class="identifier">z</span><span class="special">*</span><span class="identifier">z</span><span class="special">)</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">c</span> <span class="special">+</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">z</span><span class="special">))</span> <span class="special">/</span> <span class="identifier">z</span><span class="special">;</span>
+<pre class="programlisting"><span class="identifier">erfc</span><span class="special">(</span><span class="identifier">z</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">exp</span><span class="special">(-</span><span class="identifier">z</span><span class="special">*</span><span class="identifier">z</span><span class="special">)</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">C</span> <span class="special">+</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">z</span> <span class="special">-</span> <span class="identifier">B</span><span class="special">))</span> <span class="special">/</span> <span class="identifier">z</span><span class="special">;</span>
 </pre>
 <p>
- Again R(z) is optimised for absolute error, and the constant <code class="computeroutput"><span class="identifier">c</span></code> is the average of <code class="computeroutput"><span class="identifier">erfc</span><span class="special">(</span><span class="identifier">z</span><span class="special">)</span>
+ Again R(z - B) is optimised for absolute error, and the constant <code class="computeroutput"><span class="identifier">C</span></code> is the average of <code class="computeroutput"><span class="identifier">erfc</span><span class="special">(</span><span class="identifier">z</span><span class="special">)</span>
           <span class="special">*</span> <span class="identifier">exp</span><span class="special">(</span><span class="identifier">z</span><span class="special">*</span><span class="identifier">z</span><span class="special">)</span> <span class="special">*</span>
           <span class="identifier">z</span></code> taken at the endpoints of the
- range. Once again, as long as the absolute error in R(z) is small compared
- to <code class="computeroutput"><span class="identifier">c</span></code> then <code class="computeroutput"><span class="identifier">c</span> <span class="special">+</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">z</span><span class="special">)</span></code> will be correctly rounded, and the error
+ range. Once again, as long as the absolute error in R(z - B) is small compared
+ to <code class="computeroutput"><span class="identifier">c</span></code> then <code class="computeroutput"><span class="identifier">c</span> <span class="special">+</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">z</span>
+ <span class="special">-</span> <span class="identifier">B</span><span class="special">)</span></code> will be correctly rounded, and the error
           in the result will depend only on the accuracy of the exp function. In
           practice, in all but a very small number of cases, the error is confined
- to the last bit of the result.
+ to the last bit of the result. The constant <code class="computeroutput"><span class="identifier">B</span></code>
+ is chosen so that the left hand end of the range of the rational approximation
+ is 0.
         </p>
+<p>
+ For large <code class="computeroutput"><span class="identifier">z</span></code> over a range
+ [a, +&#8734;] the above approximation is modified to:
+ </p>
+<pre class="programlisting"><span class="identifier">erfc</span><span class="special">(</span><span class="identifier">z</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">exp</span><span class="special">(-</span><span class="identifier">z</span><span class="special">*</span><span class="identifier">z</span><span class="special">)</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">C</span> <span class="special">+</span> <span class="identifier">R</span><span class="special">(</span><span class="number">1</span> <span class="special">/</span> <span class="identifier">z</span><span class="special">))</span> <span class="special">/</span> <span class="identifier">z</span><span class="special">;</span>
+</pre>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_erf/error_inv.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_erf/error_inv.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_erf/error_inv.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -28,7 +28,7 @@
         Inverses</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.sf_erf.error_inv.synopsis"></a><h5>
-<a name="id667597"></a>
+<a name="id667755"></a>
           <a href="error_inv.html#math_toolkit.special.sf_erf.error_inv.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -69,7 +69,7 @@
 <p>
         </p>
 <a name="math_toolkit.special.sf_erf.error_inv.description"></a><h5>
-<a name="id668144"></a>
+<a name="id668301"></a>
           <a href="error_inv.html#math_toolkit.special.sf_erf.error_inv.description">Description</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
@@ -103,7 +103,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/erfc_inv.png" align="middle"></span>
         </p>
 <a name="math_toolkit.special.sf_erf.error_inv.accuracy"></a><h5>
-<a name="id668689"></a>
+<a name="id668846"></a>
           <a href="error_inv.html#math_toolkit.special.sf_erf.error_inv.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -113,7 +113,7 @@
           error functions</a>.
         </p>
 <a name="math_toolkit.special.sf_erf.error_inv.testing"></a><h5>
-<a name="id668730"></a>
+<a name="id668886"></a>
           <a href="error_inv.html#math_toolkit.special.sf_erf.error_inv.testing">Testing</a>
         </h5>
 <p>
@@ -135,7 +135,7 @@
           </li>
 </ul></div>
 <a name="math_toolkit.special.sf_erf.error_inv.implementation"></a><h5>
-<a name="id668797"></a>
+<a name="id668953"></a>
           <a href="error_inv.html#math_toolkit.special.sf_erf.error_inv.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/hermite.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/hermite.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/hermite.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -27,7 +27,7 @@
 <a name="math_toolkit.special.sf_poly.hermite"></a> Hermite Polynomials
 </h4></div></div></div>
 <a name="math_toolkit.special.sf_poly.hermite.synopsis"></a><h5>
-<a name="id677070"></a>
+<a name="id677225"></a>
           <a href="hermite.html#math_toolkit.special.sf_poly.hermite.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -51,7 +51,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.sf_poly.hermite.description"></a><h5>
-<a name="id677577"></a>
+<a name="id677731"></a>
           <a href="hermite.html#math_toolkit.special.sf_poly.hermite.description">Description</a>
         </h5>
 <p>
@@ -136,7 +136,7 @@
 </dl>
 </div>
 <a name="math_toolkit.special.sf_poly.hermite.accuracy"></a><h5>
-<a name="id678589"></a>
+<a name="id678743"></a>
           <a href="hermite.html#math_toolkit.special.sf_poly.hermite.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -146,7 +146,7 @@
           zero error</a>.
         </p>
 <div class="table">
-<a name="id678620"></a><p class="title"><b>Table 33. Peak Errors In the Hermite Polynomial</b></p>
+<a name="id678774"></a><p class="title"><b>Table 33. Peak Errors In the Hermite Polynomial</b></p>
 <div class="table-contents"><table class="table" summary="Peak Errors In the Hermite Polynomial">
 <colgroup>
 <col>
@@ -253,7 +253,7 @@
           is very close to a root.
         </p>
 <a name="math_toolkit.special.sf_poly.hermite.testing"></a><h5>
-<a name="id678796"></a>
+<a name="id678951"></a>
           <a href="hermite.html#math_toolkit.special.sf_poly.hermite.testing">Testing</a>
         </h5>
 <p>
@@ -263,7 +263,7 @@
           precision.
         </p>
 <a name="math_toolkit.special.sf_poly.hermite.implementation"></a><h5>
-<a name="id678835"></a>
+<a name="id678989"></a>
           <a href="hermite.html#math_toolkit.special.sf_poly.hermite.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/laguerre.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/laguerre.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/laguerre.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -28,7 +28,7 @@
         Associated) Polynomials</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.sf_poly.laguerre.synopsis"></a><h5>
-<a name="id673649"></a>
+<a name="id673804"></a>
           <a href="laguerre.html#math_toolkit.special.sf_poly.laguerre.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -62,7 +62,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.sf_poly.laguerre.description"></a><h5>
-<a name="id674566"></a>
+<a name="id674721"></a>
           <a href="laguerre.html#math_toolkit.special.sf_poly.laguerre.description">Description</a>
         </h5>
 <p>
@@ -210,7 +210,7 @@
 </dl>
 </div>
 <a name="math_toolkit.special.sf_poly.laguerre.accuracy"></a><h5>
-<a name="id676604"></a>
+<a name="id676759"></a>
           <a href="laguerre.html#math_toolkit.special.sf_poly.laguerre.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -220,7 +220,7 @@
           zero error</a>.
         </p>
 <div class="table">
-<a name="id676635"></a><p class="title"><b>Table 31. Peak Errors In the Laguerre Polynomial</b></p>
+<a name="id676790"></a><p class="title"><b>Table 31. Peak Errors In the Laguerre Polynomial</b></p>
 <div class="table-contents"><table class="table" summary="Peak Errors In the Laguerre Polynomial">
 <colgroup>
 <col>
@@ -320,7 +320,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id676800"></a><p class="title"><b>Table 32. Peak Errors In the Associated Laguerre
+<a name="id676955"></a><p class="title"><b>Table 32. Peak Errors In the Associated Laguerre
         Polynomial</b></p>
 <div class="table-contents"><table class="table" summary="Peak Errors In the Associated Laguerre
         Polynomial">
@@ -429,7 +429,7 @@
           is very close to a root.
         </p>
 <a name="math_toolkit.special.sf_poly.laguerre.testing"></a><h5>
-<a name="id676977"></a>
+<a name="id677132"></a>
           <a href="laguerre.html#math_toolkit.special.sf_poly.laguerre.testing">Testing</a>
         </h5>
 <p>
@@ -439,7 +439,7 @@
           precision.
         </p>
 <a name="math_toolkit.special.sf_poly.laguerre.implementation"></a><h5>
-<a name="id677016"></a>
+<a name="id677171"></a>
           <a href="laguerre.html#math_toolkit.special.sf_poly.laguerre.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/legendre.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/legendre.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/legendre.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -28,7 +28,7 @@
         Associated) Polynomials</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.sf_poly.legendre.synopsis"></a><h5>
-<a name="id669318"></a>
+<a name="id669474"></a>
           <a href="legendre.html#math_toolkit.special.sf_poly.legendre.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -84,7 +84,7 @@
 <p>
         </p>
 <a name="math_toolkit.special.sf_poly.legendre.description"></a><h5>
-<a name="id670494"></a>
+<a name="id670651"></a>
           <a href="legendre.html#math_toolkit.special.sf_poly.legendre.description">Description</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
@@ -292,7 +292,7 @@
 </dl>
 </div>
 <a name="math_toolkit.special.sf_poly.legendre.accuracy"></a><h5>
-<a name="id672942"></a>
+<a name="id673098"></a>
           <a href="legendre.html#math_toolkit.special.sf_poly.legendre.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -302,7 +302,7 @@
           zero error</a>.
         </p>
 <div class="table">
-<a name="id672973"></a><p class="title"><b>Table 28. Peak Errors In the Legendre P Function</b></p>
+<a name="id673129"></a><p class="title"><b>Table 28. Peak Errors In the Legendre P Function</b></p>
 <div class="table-contents"><table class="table" summary="Peak Errors In the Legendre P Function">
 <colgroup>
 <col>
@@ -431,7 +431,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id673171"></a><p class="title"><b>Table 29. Peak Errors In the Associated Legendre
+<a name="id673327"></a><p class="title"><b>Table 29. Peak Errors In the Associated Legendre
         P Function</b></p>
 <div class="table-contents"><table class="table" summary="Peak Errors In the Associated Legendre
         P Function">
@@ -533,7 +533,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id673329"></a><p class="title"><b>Table 30. Peak Errors In the Legendre Q Function</b></p>
+<a name="id673485"></a><p class="title"><b>Table 30. Peak Errors In the Legendre Q Function</b></p>
 <div class="table-contents"><table class="table" summary="Peak Errors In the Legendre Q Function">
 <colgroup>
 <col>
@@ -675,7 +675,7 @@
           given here.
         </p>
 <a name="math_toolkit.special.sf_poly.legendre.testing"></a><h5>
-<a name="id673555"></a>
+<a name="id673711"></a>
           <a href="legendre.html#math_toolkit.special.sf_poly.legendre.testing">Testing</a>
         </h5>
 <p>
@@ -685,7 +685,7 @@
           precision.
         </p>
 <a name="math_toolkit.special.sf_poly.legendre.implementation"></a><h5>
-<a name="id673594"></a>
+<a name="id673750"></a>
           <a href="legendre.html#math_toolkit.special.sf_poly.legendre.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/sph_harm.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/sph_harm.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/sph_harm.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -27,7 +27,7 @@
 <a name="math_toolkit.special.sf_poly.sph_harm"></a> Spherical Harmonics
 </h4></div></div></div>
 <a name="math_toolkit.special.sf_poly.sph_harm.synopsis"></a><h5>
-<a name="id678890"></a>
+<a name="id679044"></a>
           <a href="sph_harm.html#math_toolkit.special.sf_poly.sph_harm.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -60,7 +60,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.sf_poly.sph_harm.description"></a><h5>
-<a name="id680015"></a>
+<a name="id680169"></a>
           <a href="sph_harm.html#math_toolkit.special.sf_poly.sph_harm.description">Description</a>
         </h5>
 <p>
@@ -155,7 +155,7 @@
           <span class="inlinemediaobject"><img src="../../../../equations/spherical_2.png"></span>
         </p>
 <a name="math_toolkit.special.sf_poly.sph_harm.accuracy"></a><h5>
-<a name="id681277"></a>
+<a name="id681441"></a>
           <a href="sph_harm.html#math_toolkit.special.sf_poly.sph_harm.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -170,7 +170,7 @@
           All values are in units of epsilon.
         </p>
 <div class="table">
-<a name="id681316"></a><p class="title"><b>Table 34. Peak Errors In the Sperical Harmonic Functions</b></p>
+<a name="id681481"></a><p class="title"><b>Table 34. Peak Errors In the Sperical Harmonic Functions</b></p>
 <div class="table-contents"><table class="table" summary="Peak Errors In the Sperical Harmonic Functions">
 <colgroup>
 <col>
@@ -276,7 +276,7 @@
           arbitrarily large when the function is very close to a root.
         </p>
 <a name="math_toolkit.special.sf_poly.sph_harm.testing"></a><h5>
-<a name="id681496"></a>
+<a name="id681660"></a>
           <a href="sph_harm.html#math_toolkit.special.sf_poly.sph_harm.testing">Testing</a>
         </h5>
 <p>
@@ -286,7 +286,7 @@
           precision.
         </p>
 <a name="math_toolkit.special.sf_poly.sph_harm.implementation"></a><h5>
-<a name="id681534"></a>
+<a name="id681699"></a>
           <a href="sph_harm.html#math_toolkit.special.sf_poly.sph_harm.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/compilers.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/compilers.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/compilers.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -37,7 +37,7 @@
 <p>
         </p>
 <div class="table">
-<a name="id813292"></a><p class="title"><b>Table 54. Supported/Tested Compilers</b></p>
+<a name="id813658"></a><p class="title"><b>Table 54. Supported/Tested Compilers</b></p>
 <div class="table-contents"><table class="table" summary="Supported/Tested Compilers">
 <colgroup>
 <col>
@@ -540,7 +540,7 @@
 </div>
 <p><br class="table-break"> </p>
 <div class="table">
-<a name="id814085"></a><p class="title"><b>Table 55. Unsupported Compilers</b></p>
+<a name="id814456"></a><p class="title"><b>Table 55. Unsupported Compilers</b></p>
 <div class="table-contents"><table class="table" summary="Unsupported Compilers">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/credits.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/credits.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/credits.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -63,10 +63,10 @@
 <p>
         Plots of the functions and distributions were prepared in W3C
         standard Scalable Vector Graphic (SVG)
- format using a program created by Jacob Voytko during a Google 'Summer of
- Code'. Since browser support for rendering SVG is still not universal (Microsoft
- Internet Explorer, even IE 8 beta, still lacks native SVG support but can
- be made to work with <a href="http://www.adobe.com/svg/viewer/install/" target="_top">Adobe's
+ format using a program created by Jacob Voytko during a <a href="http://code.google.com/soc/2007/" target="_top">Google
+ Summer of Code (2007)</a>. Since browser support for rendering SVG is
+ still not universal (Microsoft Internet Explorer, even IE 8 beta, still lacks
+ native SVG support but can be made to work with <a href="http://www.adobe.com/svg/viewer/install/" target="_top">Adobe's
         free SVG viewer</a> plugin), so the SVG files were batch converted to
         JPEG using Inkscape.
       </p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/history1.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/history1.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/history1.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -30,7 +30,7 @@
         <a name="math_toolkit.status.history1.boost_1_36_0"></a>
         </p>
 <h5>
-<a name="id812846"></a>
+<a name="id813212"></a>
           <a href="history1.html#math_toolkit.status.history1.boost_1_36_0">Boost-1.36.0</a>
         </h5>
 <p>
@@ -65,7 +65,7 @@
         <a name="math_toolkit.status.history1.boost_1_35_0__post_review_first_official_release"></a>
         </p>
 <h5>
-<a name="id812913"></a>
+<a name="id813280"></a>
           <a href="history1.html#math_toolkit.status.history1.boost_1_35_0__post_review_first_official_release">Boost-1.35.0:
           Post Review First Official Release</a>
         </h5>
@@ -102,7 +102,7 @@
         <a name="math_toolkit.status.history1.milestone_4__second_review_candidate__1st_march_2007_"></a>
         </p>
 <h5>
-<a name="id813016"></a>
+<a name="id813383"></a>
           <a href="history1.html#math_toolkit.status.history1.milestone_4__second_review_candidate__1st_march_2007_">Milestone
           4: Second Review Candidate (1st March 2007)</a>
         </h5>
@@ -121,7 +121,7 @@
         <a name="math_toolkit.status.history1.milestone_3__first_review_candidate__31st_dec_2006_"></a>
         </p>
 <h5>
-<a name="id813057"></a>
+<a name="id813424"></a>
           <a href="history1.html#math_toolkit.status.history1.milestone_3__first_review_candidate__31st_dec_2006_">Milestone
           3: First Review Candidate (31st Dec 2006)</a>
         </h5>
@@ -154,7 +154,7 @@
         <a name="math_toolkit.status.history1.milestone_2__released_september_10th_2006"></a>
         </p>
 <h5>
-<a name="id813123"></a>
+<a name="id813490"></a>
           <a href="history1.html#math_toolkit.status.history1.milestone_2__released_september_10th_2006">Milestone
           2: Released September 10th 2006</a>
         </h5>
@@ -195,7 +195,7 @@
         <a name="math_toolkit.status.history1.milestone_1__released_march_31st_2006"></a>
         </p>
 <h5>
-<a name="id813200"></a>
+<a name="id813567"></a>
           <a href="history1.html#math_toolkit.status.history1.milestone_1__released_march_31st_2006">Milestone
           1: Released March 31st 2006</a>
         </h5>
@@ -230,7 +230,7 @@
 <p>
         </p>
 <p>
- Sandbox and trunk last synchonised at revision: 44092.
+ Sandbox and trunk last synchonised at revision: 44694.
         </p>
 <p>
       </p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/issues.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/issues.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/issues.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -43,7 +43,7 @@
         with it.
       </p>
 <a name="math_toolkit.status.issues.tgamma"></a><h5>
-<a name="id814269"></a>
+<a name="id814640"></a>
         <a href="issues.html#math_toolkit.status.issues.tgamma">tgamma</a>
       </h5>
 <div class="itemizedlist"><ul type="disc"><li>
@@ -51,7 +51,7 @@
           be optimized any further? (low priority)
         </li></ul></div>
 <a name="math_toolkit.status.issues.incomplete_beta"></a><h5>
-<a name="id814311"></a>
+<a name="id814682"></a>
         <a href="issues.html#math_toolkit.status.issues.incomplete_beta">Incomplete Beta</a>
       </h5>
 <div class="itemizedlist"><ul type="disc"><li>
@@ -59,7 +59,7 @@
           (medium priority).
         </li></ul></div>
 <a name="math_toolkit.status.issues.inverse_gamma"></a><h5>
-<a name="id814344"></a>
+<a name="id814715"></a>
         <a href="issues.html#math_toolkit.status.issues.inverse_gamma">Inverse Gamma</a>
       </h5>
 <div class="itemizedlist"><ul type="disc"><li>
@@ -67,7 +67,7 @@
           is good enough (Medium Priority).
         </li></ul></div>
 <a name="math_toolkit.status.issues.polynomials"></a><h5>
-<a name="id814376"></a>
+<a name="id814748"></a>
         <a href="issues.html#math_toolkit.status.issues.polynomials">Polynomials</a>
       </h5>
 <div class="itemizedlist"><ul type="disc"><li>
@@ -77,7 +77,7 @@
           not (Low Priority).
         </li></ul></div>
 <a name="math_toolkit.status.issues.elliptic_integrals"></a><h5>
-<a name="id814413"></a>
+<a name="id814784"></a>
         <a href="issues.html#math_toolkit.status.issues.elliptic_integrals">Elliptic Integrals</a>
       </h5>
 <div class="itemizedlist"><ul type="disc">
@@ -127,7 +127,7 @@
         </li>
 </ul></div>
 <a name="math_toolkit.status.issues.inverse_hyperbolic_functions"></a><h5>
-<a name="id814571"></a>
+<a name="id814942"></a>
         <a href="issues.html#math_toolkit.status.issues.inverse_hyperbolic_functions">Inverse
         Hyperbolic Functions</a>
       </h5>
@@ -137,7 +137,7 @@
           is probably only an issue for very high precision types (Low Priority).
         </li></ul></div>
 <a name="math_toolkit.status.issues.statistical_distributions"></a><h5>
-<a name="id814616"></a>
+<a name="id814988"></a>
         <a href="issues.html#math_toolkit.status.issues.statistical_distributions">Statistical
         distributions</a>
       </h5>
@@ -146,7 +146,7 @@
           for very large degrees of freedom?
         </li></ul></div>
 <a name="math_toolkit.status.issues.feature_requests"></a><h5>
-<a name="id814651"></a>
+<a name="id815022"></a>
         <a href="issues.html#math_toolkit.status.issues.feature_requests">Feature Requests</a>
       </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
 <link rel="start" href="../index.html" title="Math Toolkit">
 <link rel="up" href="../index.html" title="Math Toolkit">
-<link rel="prev" href="special/fpclass.html" title="Floating Point Classification: Infinities and NaN's">
+<link rel="prev" href="special/fpclass.html" title="Floating-Point Classification: Infinities and NaN's">
 <link rel="next" href="toolkit/internals_overview.html" title="Overview">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/cf.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/cf.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/cf.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -28,7 +28,7 @@
         Evaluation</a>
 </h4></div></div></div>
 <a name="math_toolkit.toolkit.internals1.cf.synopsis"></a><h5>
-<a name="id722563"></a>
+<a name="id722948"></a>
           <a href="cf.html#math_toolkit.toolkit.internals1.cf.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -59,7 +59,7 @@
 <span class="special">}}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.toolkit.internals1.cf.description"></a><h5>
-<a name="id723284"></a>
+<a name="id723669"></a>
           <a href="cf.html#math_toolkit.toolkit.internals1.cf.description">Description</a>
         </h5>
 <p>
@@ -157,7 +157,7 @@
           a continued fraction for convergence.
         </p>
 <a name="math_toolkit.toolkit.internals1.cf.implementation"></a><h5>
-<a name="id723562"></a>
+<a name="id723947"></a>
           <a href="cf.html#math_toolkit.toolkit.internals1.cf.implementation">Implementation</a>
         </h5>
 <p>
@@ -167,7 +167,7 @@
           Lentz, W.J. 1976, Applied Optics, vol. 15, pp. 668-671.
         </p>
 <a name="math_toolkit.toolkit.internals1.cf.examples"></a><h5>
-<a name="id723596"></a>
+<a name="id723981"></a>
           <a href="cf.html#math_toolkit.toolkit.internals1.cf.examples">Examples</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/minima.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/minima.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/minima.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -28,7 +28,7 @@
         Minima</a>
 </h4></div></div></div>
 <a name="math_toolkit.toolkit.internals1.minima.synopsis"></a><h5>
-<a name="id740279"></a>
+<a name="id740666"></a>
           <a href="minima.html#math_toolkit.toolkit.internals1.minima.synopsis">synopsis</a>
         </h5>
 <p>
@@ -45,7 +45,7 @@
 <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">brent_find_minima</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">min</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">max</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">bits</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&amp;</span> <span class="identifier">max_iter</span><span class="special">);</span>
 </pre>
 <a name="math_toolkit.toolkit.internals1.minima.description"></a><h5>
-<a name="id740749"></a>
+<a name="id741136"></a>
           <a href="minima.html#math_toolkit.toolkit.internals1.minima.description">Description</a>
         </h5>
 <p>
@@ -88,7 +88,7 @@
           the abscissa at the minima and the value of f(x) at the minima.
         </p>
 <a name="math_toolkit.toolkit.internals1.minima.implementation"></a><h5>
-<a name="id740888"></a>
+<a name="id741275"></a>
           <a href="minima.html#math_toolkit.toolkit.internals1.minima.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/rational.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/rational.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/rational.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -28,7 +28,7 @@
         and Rational Function Evaluation</a>
 </h4></div></div></div>
 <a name="math_toolkit.toolkit.internals1.rational.synopsis"></a><h5>
-<a name="id724578"></a>
+<a name="id724963"></a>
           <a href="rational.html#math_toolkit.toolkit.internals1.rational.synopsis">synopsis</a>
         </h5>
 <p>
@@ -79,7 +79,7 @@
 <span class="identifier">V</span> <span class="identifier">evaluate_rational</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">num</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span><span class="special">*</span> <span class="identifier">denom</span><span class="special">,</span> <span class="identifier">V</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">count</span><span class="special">);</span>
 </pre>
 <a name="math_toolkit.toolkit.internals1.rational.description"></a><h5>
-<a name="id726703"></a>
+<a name="id727088"></a>
           <a href="rational.html#math_toolkit.toolkit.internals1.rational.description">Description</a>
         </h5>
 <p>
@@ -193,7 +193,7 @@
           evaluation with compile-time array sizes may offer slightly better performance.
         </p>
 <a name="math_toolkit.toolkit.internals1.rational.implementation"></a><h5>
-<a name="id729166"></a>
+<a name="id729552"></a>
           <a href="rational.html#math_toolkit.toolkit.internals1.rational.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/roots.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/roots.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/roots.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -28,7 +28,7 @@
         With Derivatives</a>
 </h4></div></div></div>
 <a name="math_toolkit.toolkit.internals1.roots.synopsis"></a><h5>
-<a name="id729285"></a>
+<a name="id729670"></a>
           <a href="roots.html#math_toolkit.toolkit.internals1.roots.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -61,7 +61,7 @@
 <span class="special">}}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.toolkit.internals1.roots.description"></a><h5>
-<a name="id730440"></a>
+<a name="id730826"></a>
           <a href="roots.html#math_toolkit.toolkit.internals1.roots.description">Description</a>
         </h5>
 <p>
@@ -176,7 +176,7 @@
 <a name="newton"></a><p>
         </p>
 <a name="math_toolkit.toolkit.internals1.roots.newton_raphson_method"></a><h5>
-<a name="id730761"></a>
+<a name="id731147"></a>
           <a href="roots.html#math_toolkit.toolkit.internals1.roots.newton_raphson_method">Newton
           Raphson Method</a>
         </h5>
@@ -196,7 +196,7 @@
 <a name="halley"></a><p>
         </p>
 <a name="math_toolkit.toolkit.internals1.roots.halley_s_method"></a><h5>
-<a name="id730842"></a>
+<a name="id731228"></a>
           <a href="roots.html#math_toolkit.toolkit.internals1.roots.halley_s_method">Halley's
           Method</a>
         </h5>
@@ -220,7 +220,7 @@
 <a name="schroeder"></a><p>
         </p>
 <a name="math_toolkit.toolkit.internals1.roots.schroeder_s_method"></a><h5>
-<a name="id730929"></a>
+<a name="id731315"></a>
           <a href="roots.html#math_toolkit.toolkit.internals1.roots.schroeder_s_method">Schroeder's
           Method</a>
         </h5>
@@ -244,7 +244,7 @@
           iteration.
         </p>
 <a name="math_toolkit.toolkit.internals1.roots.example"></a><h5>
-<a name="id731009"></a>
+<a name="id731395"></a>
           <a href="roots.html#math_toolkit.toolkit.internals1.roots.example">Example</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/roots2.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/roots2.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/roots2.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -28,7 +28,7 @@
         Without Derivatives</a>
 </h4></div></div></div>
 <a name="math_toolkit.toolkit.internals1.roots2.synopsis"></a><h5>
-<a name="id733125"></a>
+<a name="id733511"></a>
           <a href="roots2.html#math_toolkit.toolkit.internals1.roots2.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -141,7 +141,7 @@
 <span class="special">}}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.toolkit.internals1.roots2.description"></a><h5>
-<a name="id735767"></a>
+<a name="id736154"></a>
           <a href="roots2.html#math_toolkit.toolkit.internals1.roots2.description">Description</a>
         </h5>
 <p>
@@ -559,7 +559,7 @@
           as soon as both ends of the interval round to the same nearest integer.
         </p>
 <a name="math_toolkit.toolkit.internals1.roots2.implementation"></a><h5>
-<a name="id740212"></a>
+<a name="id740599"></a>
           <a href="roots2.html#math_toolkit.toolkit.internals1.roots2.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/series_evaluation.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/series_evaluation.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/series_evaluation.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -28,7 +28,7 @@
         Series Evaluation</a>
 </h4></div></div></div>
 <a name="math_toolkit.toolkit.internals1.series_evaluation.synopsis"></a><h5>
-<a name="id720707"></a>
+<a name="id721093"></a>
           <a href="series_evaluation.html#math_toolkit.toolkit.internals1.series_evaluation.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -61,7 +61,7 @@
 <span class="special">}}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.toolkit.internals1.series_evaluation.description"></a><h5>
-<a name="id721657"></a>
+<a name="id722042"></a>
           <a href="series_evaluation.html#math_toolkit.toolkit.internals1.series_evaluation.description">Description</a>
         </h5>
 <p>
@@ -117,7 +117,7 @@
           summation in this way.
         </p>
 <a name="math_toolkit.toolkit.internals1.series_evaluation.example"></a><h5>
-<a name="id721804"></a>
+<a name="id722189"></a>
           <a href="series_evaluation.html#math_toolkit.toolkit.internals1.series_evaluation.example">Example</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/error_test.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/error_test.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/error_test.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -28,7 +28,7 @@
         Error and Testing</a>
 </h4></div></div></div>
 <a name="math_toolkit.toolkit.internals2.error_test.synopsis"></a><h5>
-<a name="id744959"></a>
+<a name="id745361"></a>
           <a href="error_test.html#math_toolkit.toolkit.internals2.error_test.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -45,7 +45,7 @@
 <span class="identifier">test_result</span><span class="special">&lt;</span><span class="identifier">see</span><span class="special">-</span><span class="identifier">below</span><span class="special">&gt;</span> <span class="identifier">test</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">A</span><span class="special">&amp;</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">F1</span> <span class="identifier">test_func</span><span class="special">,</span> <span class="identifier">F2</span> <span class="identifier">expect_func</span><span class="special">);</span>
 </pre>
 <a name="math_toolkit.toolkit.internals2.error_test.description"></a><h5>
-<a name="id745311"></a>
+<a name="id745713"></a>
           <a href="error_test.html#math_toolkit.toolkit.internals2.error_test.description">Description</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
@@ -165,7 +165,7 @@
           is mainly a debugging/development aid (and a good place for a breakpoint).
         </p>
 <a name="math_toolkit.toolkit.internals2.error_test.example"></a><h5>
-<a name="id746262"></a>
+<a name="id746664"></a>
           <a href="error_test.html#math_toolkit.toolkit.internals2.error_test.example">Example</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/polynomials.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/polynomials.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/polynomials.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -27,7 +27,7 @@
 <a name="math_toolkit.toolkit.internals2.polynomials"></a> Polynomials
 </h4></div></div></div>
 <a name="math_toolkit.toolkit.internals2.polynomials.synopsis"></a><h5>
-<a name="id740978"></a>
+<a name="id741364"></a>
           <a href="polynomials.html#math_toolkit.toolkit.internals2.polynomials.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -103,7 +103,7 @@
 <span class="special">}}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.toolkit.internals2.polynomials.description"></a><h5>
-<a name="id743752"></a>
+<a name="id744139"></a>
           <a href="polynomials.html#math_toolkit.toolkit.internals2.polynomials.description">Description</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/test_data.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/test_data.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/test_data.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -46,7 +46,7 @@
           </li>
 </ul></div>
 <a name="math_toolkit.toolkit.internals2.test_data.synopsis"></a><h5>
-<a name="id747358"></a>
+<a name="id747760"></a>
           <a href="test_data.html#math_toolkit.toolkit.internals2.test_data.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">math</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tools</span><span class="special">{</span>
@@ -147,7 +147,7 @@
 <span class="special">}}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.toolkit.internals2.test_data.description"></a><h5>
-<a name="id750282"></a>
+<a name="id750684"></a>
           <a href="test_data.html#math_toolkit.toolkit.internals2.test_data.description">Description</a>
         </h5>
 <p>
@@ -177,7 +177,7 @@
           </li>
 </ul></div>
 <a name="math_toolkit.toolkit.internals2.test_data.example_1__output_data_for_graph_plotting"></a><h6>
-<a name="id750355"></a>
+<a name="id750758"></a>
           <a href="test_data.html#math_toolkit.toolkit.internals2.test_data.example_1__output_data_for_graph_plotting">Example
           1: Output Data for Graph Plotting</a>
         </h6>
@@ -211,7 +211,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/lgamma.png" align="middle"></span>
         </p>
 <a name="math_toolkit.toolkit.internals2.test_data.example_2__creating_test_data"></a><h6>
-<a name="id750913"></a>
+<a name="id751315"></a>
           <a href="test_data.html#math_toolkit.toolkit.internals2.test_data.example_2__creating_test_data">Example
           2: Creating Test Data</a>
         </h6>
@@ -375,7 +375,7 @@
           used by default as it's rather hard on the compiler when the table is large.
         </p>
 <a name="math_toolkit.toolkit.internals2.test_data.example_3__profiling_a_continued_fraction_for_convergence_and_accuracy"></a><h6>
-<a name="id753413"></a>
+<a name="id753802"></a>
           <a href="test_data.html#math_toolkit.toolkit.internals2.test_data.example_3__profiling_a_continued_fraction_for_convergence_and_accuracy">Example
           3: Profiling a Continued Fraction for Convergence and Accuracy</a>
         </h6>
@@ -481,7 +481,7 @@
           of a and z.
         </p>
 <a name="math_toolkit.toolkit.internals2.test_data.reference"></a><h5>
-<a name="id755652"></a>
+<a name="id756042"></a>
           <a href="test_data.html#math_toolkit.toolkit.internals2.test_data.reference">reference</a>
         </h5>
 <a name="test_data_reference"></a><p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt/concepts.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt/concepts.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt/concepts.html 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -42,7 +42,7 @@
         behaves just like a built in floating point type.
       </p>
 <a name="math_toolkit.using_udt.concepts.basic_arithmetic_requirements"></a><h5>
-<a name="id756655"></a>
+<a name="id757045"></a>
         <a href="concepts.html#math_toolkit.using_udt.concepts.basic_arithmetic_requirements">Basic
         Arithmetic Requirements</a>
       </h5>
@@ -1034,7 +1034,7 @@
 </td></tr>
 </table></div>
 <a name="math_toolkit.using_udt.concepts.standard_library_support_requirements"></a><h5>
-<a name="id759723"></a>
+<a name="id760113"></a>
         <a href="concepts.html#math_toolkit.using_udt.concepts.standard_library_support_requirements">Standard
         Library Support Requirements</a>
       </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/roadmap.qbk
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/roadmap.qbk (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/roadmap.qbk 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -71,7 +71,7 @@
 
 SVN Revisions:
 
-Sandbox and trunk last synchonised at revision: 44092.
+Sandbox and trunk last synchonised at revision: 44694.
 
 ]
 [/

Modified: branches/proto/v4/libs/spirit/test/karma/actions.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/actions.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/actions.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -6,8 +6,7 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
 
-#include <strstream>
-
+#include <boost/config/warning_disable.hpp>
 #include <boost/detail/lightweight_test.hpp>
 
 #include <boost/spirit/include/karma.hpp>
@@ -15,6 +14,7 @@
 #include <boost/bind.hpp>
 #include <boost/function_output_iterator.hpp>
 
+#include <strstream>
 #include "test.hpp"
 
 using namespace spirit_test;

Modified: branches/proto/v4/libs/spirit/test/karma/alternative.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/alternative.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/alternative.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -5,6 +5,7 @@
 
 // #define KARMA_TEST_COMPILE_FAIL
 
+#include <boost/config/warning_disable.hpp>
 #include <boost/detail/lightweight_test.hpp>
 
 #include <boost/spirit/include/karma_char.hpp>

Modified: branches/proto/v4/libs/spirit/test/karma/binary.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/binary.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/binary.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -3,6 +3,7 @@
 // Distributed under the Boost Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
+#include <boost/config/warning_disable.hpp>
 #include <boost/detail/lightweight_test.hpp>
 
 #include <boost/spirit/include/support_argument.hpp>

Modified: branches/proto/v4/libs/spirit/test/karma/case_handling.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/case_handling.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/case_handling.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -3,6 +3,7 @@
 // Distributed under the Boost Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
+#include <boost/config/warning_disable.hpp>
 #include <boost/detail/lightweight_test.hpp>
 
 #include <boost/spirit/include/karma_char.hpp>

Modified: branches/proto/v4/libs/spirit/test/karma/center_alignment.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/center_alignment.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/center_alignment.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -3,9 +3,7 @@
 // Distributed under the Boost Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <string>
-#include <iterator>
-
+#include <boost/config/warning_disable.hpp>
 #include <boost/detail/lightweight_test.hpp>
 
 #include <boost/spirit/include/karma_char.hpp>
@@ -14,6 +12,9 @@
 #include <boost/spirit/include/karma_generate.hpp>
 #include <boost/spirit/include/karma_directive.hpp>
 
+#include <string>
+#include <iterator>
+
 #include "test.hpp"
 
 using namespace spirit_test;

Modified: branches/proto/v4/libs/spirit/test/karma/char.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/char.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/char.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -5,6 +5,7 @@
 
 //#define KARMA_FAIL_COMPILATION
 
+#include <boost/config/warning_disable.hpp>
 #include <boost/detail/lightweight_test.hpp>
 
 #include <boost/spirit/include/support_argument.hpp>

Modified: branches/proto/v4/libs/spirit/test/karma/delimiter.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/delimiter.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/delimiter.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -5,6 +5,7 @@
 
 //#define KARMA_FAIL_COMPILATION
 
+#include <boost/config/warning_disable.hpp>
 #include <boost/detail/lightweight_test.hpp>
 
 #include <boost/spirit/include/karma_char.hpp>

Modified: branches/proto/v4/libs/spirit/test/karma/eps.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/eps.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/eps.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -3,6 +3,7 @@
 // Distributed under the Boost Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
+#include <boost/config/warning_disable.hpp>
 #include <boost/detail/lightweight_test.hpp>
 #include <boost/spirit/include/karma_auxiliary.hpp>
 #include <boost/spirit/include/phoenix_core.hpp>

Modified: branches/proto/v4/libs/spirit/test/karma/format_manip.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/format_manip.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/format_manip.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -3,6 +3,7 @@
 // Distributed under the Boost Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
+#include <boost/config/warning_disable.hpp>
 #include <boost/spirit/include/karma.hpp>
 #include <boost/spirit/include/karma_stream.hpp>
 #include <boost/spirit/include/phoenix_core.hpp>

Modified: branches/proto/v4/libs/spirit/test/karma/functor.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/functor.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/functor.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -5,6 +5,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)
 =============================================================================*/
+
+#include <boost/config/warning_disable.hpp>
 #include <boost/detail/lightweight_test.hpp>
 #include <boost/spirit/include/karma_char.hpp>
 #include <boost/spirit/include/karma_auxiliary.hpp>

Modified: branches/proto/v4/libs/spirit/test/karma/grammar.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/grammar.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/grammar.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -3,6 +3,7 @@
 // Distributed under the Boost Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
+#include <boost/config/warning_disable.hpp>
 #include <boost/detail/lightweight_test.hpp>
 
 // include this first to make rules have placeholders (e.g. r._1)

Modified: branches/proto/v4/libs/spirit/test/karma/grammar_fail.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/grammar_fail.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/grammar_fail.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -5,6 +5,7 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
 
+#include <boost/config/warning_disable.hpp>
 #include <boost/spirit/include/karma_operator.hpp>
 #include <boost/spirit/include/karma_char.hpp>
 #include <boost/spirit/include/karma_string.hpp>

Modified: branches/proto/v4/libs/spirit/test/karma/int_numerics.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/int_numerics.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/int_numerics.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -5,7 +5,7 @@
 
 //#define KARMA_FAIL_COMPILATION
 
-#include <limits>
+#include <boost/config/warning_disable.hpp>
 #include <boost/detail/lightweight_test.hpp>
 #include <boost/lexical_cast.hpp>
 #include <boost/mpl/vector.hpp>
@@ -23,6 +23,7 @@
 #include <boost/spirit/include/karma_directive.hpp>
 #include <boost/spirit/include/karma_action.hpp>
 
+#include <limits>
 #include "test.hpp"
 
 using namespace spirit_test;

Modified: branches/proto/v4/libs/spirit/test/karma/kleene.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/kleene.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/kleene.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -3,6 +3,7 @@
 // Distributed under the Boost Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
+#include <boost/config/warning_disable.hpp>
 #include <boost/detail/lightweight_test.hpp>
 
 #include <boost/assign/std/vector.hpp>

Modified: branches/proto/v4/libs/spirit/test/karma/lazy.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/lazy.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/lazy.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -3,6 +3,7 @@
 // Distributed under the Boost Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
+#include <boost/config/warning_disable.hpp>
 #include <boost/detail/lightweight_test.hpp>
 #include <boost/spirit/include/karma_char.hpp>
 #include <boost/spirit/include/karma_string.hpp>

Modified: branches/proto/v4/libs/spirit/test/karma/left_alignment.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/left_alignment.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/left_alignment.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -3,6 +3,7 @@
 // Distributed under the Boost Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
+#include <boost/config/warning_disable.hpp>
 #include <boost/detail/lightweight_test.hpp>
 
 #include <boost/spirit/include/karma_char.hpp>

Modified: branches/proto/v4/libs/spirit/test/karma/list.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/list.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/list.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -3,9 +3,7 @@
 // Distributed under the Boost Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <string>
-#include <vector>
-
+#include <boost/config/warning_disable.hpp>
 #include <boost/detail/lightweight_test.hpp>
 #include <boost/utility/enable_if.hpp>
 
@@ -23,7 +21,9 @@
 #include <boost/assign/std/vector.hpp>
 
 #include <string>
+#include <vector>
 #include <iostream>
+
 #include "test.hpp"
 
 using namespace spirit_test;

Modified: branches/proto/v4/libs/spirit/test/karma/lit.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/lit.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/lit.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -3,6 +3,7 @@
 // Distributed under the Boost Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
+#include <boost/config/warning_disable.hpp>
 #include <boost/detail/lightweight_test.hpp>
 
 #include <boost/spirit/include/karma_char.hpp>

Modified: branches/proto/v4/libs/spirit/test/karma/none.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/none.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/none.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -3,6 +3,7 @@
 // Distributed under the Boost Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
+#include <boost/config/warning_disable.hpp>
 #include <boost/detail/lightweight_test.hpp>
 #include <boost/spirit/include/karma_auxiliary.hpp>
 #include <boost/spirit/include/karma_char.hpp>

Modified: branches/proto/v4/libs/spirit/test/karma/optional.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/optional.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/optional.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -3,6 +3,7 @@
 // Distributed under the Boost Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
+#include <boost/config/warning_disable.hpp>
 #include <boost/detail/lightweight_test.hpp>
 
 #include <boost/spirit/include/karma_char.hpp>

Modified: branches/proto/v4/libs/spirit/test/karma/pattern.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/pattern.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/pattern.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -3,6 +3,7 @@
 // Distributed under the Boost Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
+#include <boost/config/warning_disable.hpp>
 #include <boost/detail/lightweight_test.hpp>
 
 // include this first to make rules have placeholders (e.g. _r1)

Modified: branches/proto/v4/libs/spirit/test/karma/real_numerics.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/real_numerics.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/real_numerics.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -5,7 +5,7 @@
 
 //#define KARMA_FAIL_COMPILATION
 
-#include <limits>
+#include <boost/config/warning_disable.hpp>
 #include <boost/detail/lightweight_test.hpp>
 #include <boost/math/concepts/real_concept.hpp>
 
@@ -14,6 +14,7 @@
 #include <boost/spirit/include/karma_generate.hpp>
 #include <boost/spirit/include/karma_directive.hpp>
 
+#include <limits>
 #include "test.hpp"
 
 using namespace spirit_test;

Modified: branches/proto/v4/libs/spirit/test/karma/right_alignment.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/right_alignment.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/right_alignment.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -3,6 +3,7 @@
 // Distributed under the Boost Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
+#include <boost/config/warning_disable.hpp>
 #include <boost/detail/lightweight_test.hpp>
 
 #include <boost/spirit/include/karma_char.hpp>

Modified: branches/proto/v4/libs/spirit/test/karma/rule_fail.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/rule_fail.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/rule_fail.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -5,6 +5,7 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
 
+#include <boost/config/warning_disable.hpp>
 #include <boost/spirit/include/karma_operator.hpp>
 #include <boost/spirit/include/karma_char.hpp>
 #include <boost/spirit/include/karma_numeric.hpp>

Modified: branches/proto/v4/libs/spirit/test/karma/sequence.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/sequence.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/sequence.cpp 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -5,6 +5,7 @@
 
 // #define KARMA_TEST_COMPILE_FAIL
 
+#include <boost/config/warning_disable.hpp>
 #include <boost/detail/lightweight_test.hpp>
 
 #include <boost/spirit/include/support_argument.hpp>

Modified: branches/proto/v4/tools/build/v2/contrib/boost.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/contrib/boost.jam (original)
+++ branches/proto/v4/tools/build/v2/contrib/boost.jam 2008-04-22 16:29:12 EDT (Tue, 22 Apr 2008)
@@ -175,8 +175,6 @@
                     case 0.0.1 : boost_0_0_1 $(inc) $(lib) ;
                     case * : boost_std $(inc) $(lib) ;
                 }
- project.act-as-jamfile boost : $(__name__) ;
- modules.call-in $(mod) : use-project boost : $(__name__) ;
             }
         }
         else {


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk