|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r60821 - in branches/release: . boost boost/algorithm/string boost/archive boost/asio/detail boost/asio/ip boost/bimap boost/config boost/detail boost/filesystem boost/functional/hash boost/fusion boost/graph boost/integer boost/interprocess boost/intrusive boost/iostreams boost/math boost/numeric/ublas boost/program_options boost/property_tree boost/python boost/regex boost/serialization boost/signals boost/signals2 boost/spirit boost/spirit/home boost/spirit/home/karma boost/spirit/home/support boost/statechart boost/system boost/thread boost/tr1 boost/type_traits boost/unordered boost/utility boost/uuid boost/variant boost/wave doc libs libs/array/doc libs/asio/doc libs/bimap libs/config libs/filesystem libs/functional/hash libs/fusion libs/graph_parallel libs/integer libs/interprocess libs/intrusive libs/iostreams libs/math libs/mpl/doc/refmanual libs/mpl/doc/src/refmanual libs/numeric/ublas libs/numeric/ublas/doc libs/program_options libs/property_tree libs/python libs/regex libs/regex/doc libs/serialization libs/signals libs/signals2 libs/spirit libs/spirit/classic/example libs/spirit/doc libs/spirit/example libs/spirit/phoenix libs/spirit/test libs/spirit/test/qi libs/statechart libs/static_assert libs/system libs/thread libs/thread/doc libs/timer libs/tr1 libs/type_traits libs/unordered libs/utility libs/uuid libs/wave more people status tools tools/bcp tools/boostbook tools/build/v2 tools/inspect tools/quickbook tools/regression tools/release tools/wave wiki
From: chris_at_[hidden]
Date: 2010-03-24 21:50:06
Author: chris_kohlhoff
Date: 2010-03-24 21:50:05 EDT (Wed, 24 Mar 2010)
New Revision: 60821
URL: http://svn.boost.org/trac/boost/changeset/60821
Log:
Merge from trunk.
........
r60743 | chris_kohlhoff | 2010-03-21 21:54:56 +1100 (Sun, 21 Mar 2010) | 2 lines
Fix search/replace error in some resolver_query_base enumerators.
........
r60745 | chris_kohlhoff | 2010-03-21 23:38:14 +1100 (Sun, 21 Mar 2010) | 2 lines
Enhance reference doc generation to handle new operator types.
........
r60746 | chris_kohlhoff | 2010-03-21 23:39:15 +1100 (Sun, 21 Mar 2010) | 2 lines
Regenerated documentation.
........
r60756 | chris_kohlhoff | 2010-03-22 14:32:56 +1100 (Mon, 22 Mar 2010) | 2 lines
Fix cancellation in Windows HANDLE backend.
........
r60781 | chris_kohlhoff | 2010-03-23 12:39:12 +1100 (Tue, 23 Mar 2010) | 3 lines
Async connect operations using the reactor should not allow speculative
completion.
........
Properties modified:
branches/release/ (props changed)
branches/release/CMakeLists.txt (props changed)
branches/release/INSTALL (props changed)
branches/release/Jamroot (props changed)
branches/release/LICENSE_1_0.txt (props changed)
branches/release/boost/ (props changed)
branches/release/boost-build.jam (props changed)
branches/release/boost.css (props changed)
branches/release/boost.png (props changed)
branches/release/boost/algorithm/string/ (props changed)
branches/release/boost/archive/ (props changed)
branches/release/boost/array.hpp (props changed)
branches/release/boost/bimap/ (props changed)
branches/release/boost/config/ (props changed)
branches/release/boost/detail/ (props changed)
branches/release/boost/filesystem/ (props changed)
branches/release/boost/functional/hash/ (props changed)
branches/release/boost/fusion/ (props changed)
branches/release/boost/graph/ (props changed)
branches/release/boost/integer/ (props changed)
branches/release/boost/interprocess/ (props changed)
branches/release/boost/intrusive/ (props changed)
branches/release/boost/iostreams/ (props changed)
branches/release/boost/math/ (props changed)
branches/release/boost/numeric/ublas/ (props changed)
branches/release/boost/program_options/ (props changed)
branches/release/boost/property_tree/ (props changed)
branches/release/boost/python/ (props changed)
branches/release/boost/regex/ (props changed)
branches/release/boost/serialization/ (props changed)
branches/release/boost/signals/ (props changed)
branches/release/boost/signals2/ (props changed)
branches/release/boost/spirit/ (props changed)
branches/release/boost/spirit/home/ (props changed)
branches/release/boost/spirit/home/karma/ (props changed)
branches/release/boost/spirit/home/support/attributes.hpp (props changed)
branches/release/boost/statechart/ (props changed)
branches/release/boost/system/ (props changed)
branches/release/boost/thread/ (props changed)
branches/release/boost/thread.hpp (props changed)
branches/release/boost/tr1/ (props changed)
branches/release/boost/type_traits/ (props changed)
branches/release/boost/unordered/ (props changed)
branches/release/boost/utility/ (props changed)
branches/release/boost/utility/value_init.hpp (props changed)
branches/release/boost/uuid/ (props changed)
branches/release/boost/variant/ (props changed)
branches/release/boost/version.hpp (props changed)
branches/release/boost/wave/ (props changed)
branches/release/bootstrap.bat (props changed)
branches/release/bootstrap.sh (props changed)
branches/release/doc/ (props changed)
branches/release/index.htm (props changed)
branches/release/index.html (props changed)
branches/release/libs/ (props changed)
branches/release/libs/array/doc/array.xml (props changed)
branches/release/libs/bimap/ (props changed)
branches/release/libs/config/ (props changed)
branches/release/libs/filesystem/ (props changed)
branches/release/libs/functional/hash/ (props changed)
branches/release/libs/fusion/ (props changed)
branches/release/libs/graph_parallel/ (props changed)
branches/release/libs/integer/ (props changed)
branches/release/libs/interprocess/ (props changed)
branches/release/libs/intrusive/ (props changed)
branches/release/libs/iostreams/ (props changed)
branches/release/libs/libraries.htm (props changed)
branches/release/libs/maintainers.txt (props changed)
branches/release/libs/math/ (props changed)
branches/release/libs/mpl/doc/refmanual/broken-compiler-workarounds.html (props changed)
branches/release/libs/mpl/doc/refmanual/categorized-index-concepts.html (props changed)
branches/release/libs/mpl/doc/refmanual/cfg-no-preprocessed-headers.html (props changed)
branches/release/libs/mpl/doc/refmanual/composition-and-argument-binding.html (props changed)
branches/release/libs/mpl/doc/refmanual/data-types-concepts.html (props changed)
branches/release/libs/mpl/doc/refmanual/data-types-miscellaneous.html (props changed)
branches/release/libs/mpl/doc/refmanual/extensible-associative-sequence.html (props changed)
branches/release/libs/mpl/doc/refmanual/inserter-class.html (props changed)
branches/release/libs/mpl/doc/refmanual/tag-dispatched-metafunction.html (props changed)
branches/release/libs/mpl/doc/refmanual/trivial-metafunctions-summary.html (props changed)
branches/release/libs/mpl/doc/src/refmanual/Iterators-Iterator.rst (props changed)
branches/release/libs/numeric/ublas/ (props changed)
branches/release/libs/numeric/ublas/doc/ (props changed)
branches/release/libs/program_options/ (props changed)
branches/release/libs/property_tree/ (props changed)
branches/release/libs/python/ (props changed)
branches/release/libs/regex/ (props changed)
branches/release/libs/regex/doc/ (props changed)
branches/release/libs/serialization/ (props changed)
branches/release/libs/signals/ (props changed)
branches/release/libs/signals2/ (props changed)
branches/release/libs/spirit/ (props changed)
branches/release/libs/spirit/classic/example/ (props changed)
branches/release/libs/spirit/doc/ (props changed)
branches/release/libs/spirit/example/ (props changed)
branches/release/libs/spirit/phoenix/ (props changed)
branches/release/libs/spirit/test/ (props changed)
branches/release/libs/spirit/test/qi/optional.cpp (props changed)
branches/release/libs/statechart/ (props changed)
branches/release/libs/static_assert/ (props changed)
branches/release/libs/system/ (props changed)
branches/release/libs/thread/ (props changed)
branches/release/libs/thread/doc/ (props changed)
branches/release/libs/timer/ (props changed)
branches/release/libs/tr1/ (props changed)
branches/release/libs/type_traits/ (props changed)
branches/release/libs/unordered/ (props changed)
branches/release/libs/utility/ (props changed)
branches/release/libs/utility/swap.html (props changed)
branches/release/libs/utility/value_init.htm (props changed)
branches/release/libs/utility/value_init_test.cpp (props changed)
branches/release/libs/uuid/ (props changed)
branches/release/libs/wave/ (props changed)
branches/release/more/ (props changed)
branches/release/people/ (props changed)
branches/release/rst.css (props changed)
branches/release/status/ (props changed)
branches/release/status/Jamfile.v2 (props changed)
branches/release/tools/ (props changed)
branches/release/tools/bcp/ (props changed)
branches/release/tools/boostbook/ (props changed)
branches/release/tools/build/v2/ (props changed)
branches/release/tools/inspect/ (props changed)
branches/release/tools/quickbook/ (props changed)
branches/release/tools/regression/ (props changed)
branches/release/tools/release/ (props changed)
branches/release/tools/wave/ (props changed)
branches/release/wiki/ (props changed)
Text files modified:
branches/release/boost/asio/detail/reactive_socket_service.hpp | 2
branches/release/boost/asio/detail/win_iocp_handle_service.hpp | 6
branches/release/boost/asio/ip/resolver_query_base.hpp | 4
branches/release/libs/asio/doc/reference.qbk | 860 ++++++++++++++++++++++++++++++++++++++-
branches/release/libs/asio/doc/reference.xsl | 78 +++
5 files changed, 912 insertions(+), 38 deletions(-)
Modified: branches/release/boost/asio/detail/reactive_socket_service.hpp
==============================================================================
--- branches/release/boost/asio/detail/reactive_socket_service.hpp (original)
+++ branches/release/boost/asio/detail/reactive_socket_service.hpp 2010-03-24 21:50:05 EDT (Wed, 24 Mar 2010)
@@ -1714,7 +1714,7 @@
{
op->ec_ = boost::system::error_code();
reactor_.start_op(reactor::connect_op,
- impl.socket_, impl.reactor_data_, op, true);
+ impl.socket_, impl.reactor_data_, op, false);
return;
}
}
Modified: branches/release/boost/asio/detail/win_iocp_handle_service.hpp
==============================================================================
--- branches/release/boost/asio/detail/win_iocp_handle_service.hpp (original)
+++ branches/release/boost/asio/detail/win_iocp_handle_service.hpp 2010-03-24 21:50:05 EDT (Wed, 24 Mar 2010)
@@ -618,7 +618,7 @@
void start_write_op(implementation_type& impl, boost::uint64_t offset,
const boost::asio::const_buffer& buffer, operation* op)
{
- update_cancellation_thread_id();
+ update_cancellation_thread_id(impl);
iocp_service_.work_started();
if (!is_open(impl))
@@ -656,7 +656,7 @@
void start_read_op(implementation_type& impl, boost::uint64_t offset,
const boost::asio::mutable_buffer& buffer, operation* op)
{
- update_cancellation_thread_id();
+ update_cancellation_thread_id(impl);
iocp_service_.work_started();
if (!is_open(impl))
@@ -691,7 +691,7 @@
}
// Update the ID of the thread from which cancellation is safe.
- void update_cancellation_thread_id()
+ void update_cancellation_thread_id(implementation_type& impl)
{
#if defined(BOOST_ASIO_ENABLE_CANCELIO)
if (impl.safe_cancellation_thread_id_ == 0)
Modified: branches/release/boost/asio/ip/resolver_query_base.hpp
==============================================================================
--- branches/release/boost/asio/ip/resolver_query_base.hpp (original)
+++ branches/release/boost/asio/ip/resolver_query_base.hpp 2010-03-24 21:50:05 EDT (Wed, 24 Mar 2010)
@@ -58,12 +58,12 @@
static const flags v4_mapped = implementation_defined;
/// If used with v4_mapped, return all matching IPv6 and IPv4 addresses.
- static const flags xll_matching = implementation_defined;
+ static const flags all_matching = implementation_defined;
/// Only return IPv4 addresses if a non-loopback IPv4 address is configured
/// for the system. Only return IPv6 addresses if a non-loopback IPv6 address
/// is configured for the system.
- static const flags xddress_configured = implementation_defined;
+ static const flags address_configured = implementation_defined;
#else
enum flags
{
Modified: branches/release/libs/asio/doc/reference.qbk
==============================================================================
--- branches/release/libs/asio/doc/reference.qbk (original)
+++ branches/release/libs/asio/doc/reference.qbk 2010-03-24 21:50:05 EDT (Wed, 24 Mar 2010)
@@ -33877,6 +33877,91 @@
[Construct an iterator representing the end of the buffers' data. ]
]
+ [
+ [[link boost_asio.reference.buffers_iterator.operator__star_ [*operator *]]]
+ [Dereference an iterator. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffers_iterator.operator_plus__plus_ [*operator++]]]
+ [Increment operator (prefix).
+
+ Increment operator (postfix). ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffers_iterator.operator_plus__eq_ [*operator+=]]]
+ [Addition operator. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffers_iterator.operator_minus__minus_ [*operator--]]]
+ [Decrement operator (prefix).
+
+ Decrement operator (postfix). ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffers_iterator.operator_minus__eq_ [*operator-=]]]
+ [Subtraction operator. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffers_iterator.operator_arrow_ [*operator->]]]
+ [Dereference an iterator. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffers_iterator.operator_lb__rb_ [*operator\[\]]]]
+ [Access an individual element. ]
+ ]
+
+]
+
+[heading Friends]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.buffers_iterator.operator_not__eq_ [*operator!=]]]
+ [Test two iterators for inequality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffers_iterator.operator_plus_ [*operator+]]]
+ [Addition operator. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffers_iterator.operator_minus_ [*operator-]]]
+ [Subtraction operator. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffers_iterator.operator_lt_ [*operator<]]]
+ [Compare two iterators. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffers_iterator.operator_lt__eq_ [*operator<=]]]
+ [Compare two iterators. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffers_iterator.operator_eq__eq_ [*operator==]]]
+ [Test two iterators for equality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffers_iterator.operator_gt_ [*operator>]]]
+ [Compare two iterators. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffers_iterator.operator_gt__eq_ [*operator>=]]]
+ [Compare two iterators. ]
+ ]
+
]
[heading Requirements]
@@ -33930,6 +34015,391 @@
+[section:operator__star_ buffers_iterator::operator *]
+
+[indexterm2 operator *..buffers_iterator]
+Dereference an iterator.
+
+
+ byte_type & operator *() const;
+
+
+
+[endsect]
+
+
+
+[section:operator_not__eq_ buffers_iterator::operator!=]
+
+[indexterm2 operator!=..buffers_iterator]
+Test two iterators for inequality.
+
+
+ friend bool operator!=(
+ const buffers_iterator & a,
+ const buffers_iterator & b);
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/buffers_iterator.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_plus_ buffers_iterator::operator+]
+
+[indexterm2 operator+..buffers_iterator]
+Addition operator.
+
+
+ friend buffers_iterator operator+(
+ const buffers_iterator & iter,
+ std::ptrdiff_t difference);
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/buffers_iterator.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+[section:operator_plus__plus_ buffers_iterator::operator++]
+
+[indexterm2 operator++..buffers_iterator]
+Increment operator (prefix).
+
+
+ buffers_iterator & ``[link boost_asio.reference.buffers_iterator.operator_plus__plus_.overload1 operator++]``();
+ `` [''''»''' [link boost_asio.reference.buffers_iterator.operator_plus__plus_.overload1 more...]]``
+
+
+Increment operator (postfix).
+
+
+ buffers_iterator ``[link boost_asio.reference.buffers_iterator.operator_plus__plus_.overload2 operator++]``(
+ int );
+ `` [''''»''' [link boost_asio.reference.buffers_iterator.operator_plus__plus_.overload2 more...]]``
+
+
+[section:overload1 buffers_iterator::operator++ (1 of 2 overloads)]
+
+
+Increment operator (prefix).
+
+
+ buffers_iterator & operator++();
+
+
+
+[endsect]
+
+
+
+[section:overload2 buffers_iterator::operator++ (2 of 2 overloads)]
+
+
+Increment operator (postfix).
+
+
+ buffers_iterator operator++(
+ int );
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:operator_plus__eq_ buffers_iterator::operator+=]
+
+[indexterm2 operator+=..buffers_iterator]
+Addition operator.
+
+
+ buffers_iterator & operator+=(
+ std::ptrdiff_t difference);
+
+
+
+[endsect]
+
+
+[section:operator_minus_ buffers_iterator::operator-]
+
+[indexterm2 operator-..buffers_iterator]
+Subtraction operator.
+
+
+ friend buffers_iterator ``[link boost_asio.reference.buffers_iterator.operator_minus_.overload1 operator-]``(
+ const buffers_iterator & iter,
+ std::ptrdiff_t difference);
+ `` [''''»''' [link boost_asio.reference.buffers_iterator.operator_minus_.overload1 more...]]``
+
+ friend std::ptrdiff_t ``[link boost_asio.reference.buffers_iterator.operator_minus_.overload2 operator-]``(
+ const buffers_iterator & a,
+ const buffers_iterator & b);
+ `` [''''»''' [link boost_asio.reference.buffers_iterator.operator_minus_.overload2 more...]]``
+
+
+[section:overload1 buffers_iterator::operator- (1 of 2 overloads)]
+
+
+Subtraction operator.
+
+
+ friend buffers_iterator operator-(
+ const buffers_iterator & iter,
+ std::ptrdiff_t difference);
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/buffers_iterator.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:overload2 buffers_iterator::operator- (2 of 2 overloads)]
+
+
+Subtraction operator.
+
+
+ friend std::ptrdiff_t operator-(
+ const buffers_iterator & a,
+ const buffers_iterator & b);
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/buffers_iterator.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+[endsect]
+
+[section:operator_minus__minus_ buffers_iterator::operator--]
+
+[indexterm2 operator--..buffers_iterator]
+Decrement operator (prefix).
+
+
+ buffers_iterator & ``[link boost_asio.reference.buffers_iterator.operator_minus__minus_.overload1 operator--]``();
+ `` [''''»''' [link boost_asio.reference.buffers_iterator.operator_minus__minus_.overload1 more...]]``
+
+
+Decrement operator (postfix).
+
+
+ buffers_iterator ``[link boost_asio.reference.buffers_iterator.operator_minus__minus_.overload2 operator--]``(
+ int );
+ `` [''''»''' [link boost_asio.reference.buffers_iterator.operator_minus__minus_.overload2 more...]]``
+
+
+[section:overload1 buffers_iterator::operator-- (1 of 2 overloads)]
+
+
+Decrement operator (prefix).
+
+
+ buffers_iterator & operator--();
+
+
+
+[endsect]
+
+
+
+[section:overload2 buffers_iterator::operator-- (2 of 2 overloads)]
+
+
+Decrement operator (postfix).
+
+
+ buffers_iterator operator--(
+ int );
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:operator_minus__eq_ buffers_iterator::operator-=]
+
+[indexterm2 operator-=..buffers_iterator]
+Subtraction operator.
+
+
+ buffers_iterator & operator-=(
+ std::ptrdiff_t difference);
+
+
+
+[endsect]
+
+
+
+[section:operator_arrow_ buffers_iterator::operator->]
+
+[indexterm2 operator->..buffers_iterator]
+Dereference an iterator.
+
+
+ byte_type * operator->() const;
+
+
+
+[endsect]
+
+
+
+[section:operator_lt_ buffers_iterator::operator<]
+
+[indexterm2 operator<..buffers_iterator]
+Compare two iterators.
+
+
+ friend bool operator<(
+ const buffers_iterator & a,
+ const buffers_iterator & b);
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/buffers_iterator.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_lt__eq_ buffers_iterator::operator<=]
+
+[indexterm2 operator<=..buffers_iterator]
+Compare two iterators.
+
+
+ friend bool operator<=(
+ const buffers_iterator & a,
+ const buffers_iterator & b);
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/buffers_iterator.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_eq__eq_ buffers_iterator::operator==]
+
+[indexterm2 operator==..buffers_iterator]
+Test two iterators for equality.
+
+
+ friend bool operator==(
+ const buffers_iterator & a,
+ const buffers_iterator & b);
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/buffers_iterator.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_gt_ buffers_iterator::operator>]
+
+[indexterm2 operator>..buffers_iterator]
+Compare two iterators.
+
+
+ friend bool operator>(
+ const buffers_iterator & a,
+ const buffers_iterator & b);
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/buffers_iterator.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_gt__eq_ buffers_iterator::operator>=]
+
+[indexterm2 operator>=..buffers_iterator]
+Compare two iterators.
+
+
+ friend bool operator>=(
+ const buffers_iterator & a,
+ const buffers_iterator & b);
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/buffers_iterator.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_lb__rb_ buffers_iterator::operator\[\]]
+
+[indexterm2 operator\[\]..buffers_iterator]
+Access an individual element.
+
+
+ byte_type & operator[](
+ std::ptrdiff_t difference) const;
+
+
+
+[endsect]
+
+
+
[endsect]
[section:const_buffer const_buffer]
@@ -39102,7 +39572,7 @@
[
[[link boost_asio.reference.ip__address_v4.to_bytes [*to_bytes]]]
- [Get the address in bytes. ]
+ [Get the address in bytes, in network byte order. ]
]
[
@@ -39724,7 +40194,7 @@
[section:to_bytes ip::address_v4::to_bytes]
[indexterm2 to_bytes..ip::address_v4]
-Get the address in bytes.
+Get the address in bytes, in network byte order.
bytes_type to_bytes() const;
@@ -39917,7 +40387,7 @@
[
[[link boost_asio.reference.ip__address_v6.to_bytes [*to_bytes]]]
- [Get the address in bytes. ]
+ [Get the address in bytes, in network byte order. ]
]
[
@@ -40623,7 +41093,7 @@
[section:to_bytes ip::address_v6::to_bytes]
[indexterm2 to_bytes..ip::address_v6]
-Get the address in bytes.
+Get the address in bytes, in network byte order.
bytes_type to_bytes() const;
@@ -42334,6 +42804,39 @@
Create an iterator from an endpoint, host name and service name. ]
]
+ [
+ [[link boost_asio.reference.ip__basic_resolver_iterator.operator__star_ [*operator *]]]
+ [Dereference an iterator. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_iterator.operator_plus__plus_ [*operator++]]]
+ [Increment operator (prefix).
+
+ Increment operator (postfix). ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_iterator.operator_arrow_ [*operator->]]]
+ [Dereference an iterator. ]
+ ]
+
+]
+
+[heading Friends]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_iterator.operator_not__eq_ [*operator!=]]]
+ [Test two iterators for inequality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_iterator.operator_eq__eq_ [*operator==]]]
+ [Test two iterators for equality. ]
+ ]
+
]
The [link boost_asio.reference.ip__basic_resolver_iterator `ip::basic_resolver_iterator`] class template is used to define iterators over the results returned by a resolver.
@@ -42433,6 +42936,126 @@
[endsect]
+[section:operator__star_ ip::basic_resolver_iterator::operator *]
+
+[indexterm2 operator *..ip::basic_resolver_iterator]
+Dereference an iterator.
+
+
+ const basic_resolver_entry< InternetProtocol > & operator *() const;
+
+
+
+[endsect]
+
+
+
+[section:operator_not__eq_ ip::basic_resolver_iterator::operator!=]
+
+[indexterm2 operator!=..ip::basic_resolver_iterator]
+Test two iterators for inequality.
+
+
+ friend bool operator!=(
+ const basic_resolver_iterator & a,
+ const basic_resolver_iterator & b);
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/ip/basic_resolver_iterator.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+[section:operator_plus__plus_ ip::basic_resolver_iterator::operator++]
+
+[indexterm2 operator++..ip::basic_resolver_iterator]
+Increment operator (prefix).
+
+
+ basic_resolver_iterator & ``[link boost_asio.reference.ip__basic_resolver_iterator.operator_plus__plus_.overload1 operator++]``();
+ `` [''''»''' [link boost_asio.reference.ip__basic_resolver_iterator.operator_plus__plus_.overload1 more...]]``
+
+
+Increment operator (postfix).
+
+
+ basic_resolver_iterator ``[link boost_asio.reference.ip__basic_resolver_iterator.operator_plus__plus_.overload2 operator++]``(
+ int );
+ `` [''''»''' [link boost_asio.reference.ip__basic_resolver_iterator.operator_plus__plus_.overload2 more...]]``
+
+
+[section:overload1 ip::basic_resolver_iterator::operator++ (1 of 2 overloads)]
+
+
+Increment operator (prefix).
+
+
+ basic_resolver_iterator & operator++();
+
+
+
+[endsect]
+
+
+
+[section:overload2 ip::basic_resolver_iterator::operator++ (2 of 2 overloads)]
+
+
+Increment operator (postfix).
+
+
+ basic_resolver_iterator operator++(
+ int );
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:operator_arrow_ ip::basic_resolver_iterator::operator->]
+
+[indexterm2 operator->..ip::basic_resolver_iterator]
+Dereference an iterator.
+
+
+ const basic_resolver_entry< InternetProtocol > * operator->() const;
+
+
+
+[endsect]
+
+
+
+[section:operator_eq__eq_ ip::basic_resolver_iterator::operator==]
+
+[indexterm2 operator==..ip::basic_resolver_iterator]
+Test two iterators for equality.
+
+
+ friend bool operator==(
+ const basic_resolver_iterator & a,
+ const basic_resolver_iterator & b);
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/ip/basic_resolver_iterator.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
[endsect]
[section:ip__basic_resolver_query ip::basic_resolver_query]
@@ -42453,6 +43076,13 @@
[
+ [[link boost_asio.reference.ip__basic_resolver_query.flags [*flags]]]
+ [A bitmask type (C++ Std \[lib.bitmask.types\]). ]
+
+ ]
+
+ [
+
[[link boost_asio.reference.ip__basic_resolver_query.protocol_type [*protocol_type]]]
[The protocol type associated with the endpoint query. ]
@@ -42560,7 +43190,7 @@
Only return IPv4 addresses if a non-loopback IPv4 address is configured for the system. Only return IPv6 addresses if a non-loopback IPv6 address is configured for the system.
- static const int address_configured = implementation_defined;
+ static const flags address_configured = implementation_defined;
@@ -42577,7 +43207,7 @@
If used with v4\_mapped, return all matching IPv6 and IPv4 addresses.
- static const int all_matching = implementation_defined;
+ static const flags all_matching = implementation_defined;
@@ -42592,7 +43222,7 @@
``[link boost_asio.reference.ip__basic_resolver_query.basic_resolver_query.overload1 basic_resolver_query]``(
const std::string & service_name,
- int flags = passive|address_configured);
+ resolver_query_base::flags resolve_flags = passive|address_configured);
`` [''''»''' [link boost_asio.reference.ip__basic_resolver_query.basic_resolver_query.overload1 more...]]``
@@ -42602,7 +43232,7 @@
``[link boost_asio.reference.ip__basic_resolver_query.basic_resolver_query.overload2 basic_resolver_query]``(
const protocol_type & protocol,
const std::string & service_name,
- int flags = passive|address_configured);
+ resolver_query_base::flags resolve_flags = passive|address_configured);
`` [''''»''' [link boost_asio.reference.ip__basic_resolver_query.basic_resolver_query.overload2 more...]]``
@@ -42612,7 +43242,7 @@
``[link boost_asio.reference.ip__basic_resolver_query.basic_resolver_query.overload3 basic_resolver_query]``(
const std::string & host_name,
const std::string & service_name,
- int flags = address_configured);
+ resolver_query_base::flags resolve_flags = address_configured);
`` [''''»''' [link boost_asio.reference.ip__basic_resolver_query.basic_resolver_query.overload3 more...]]``
@@ -42623,7 +43253,7 @@
const protocol_type & protocol,
const std::string & host_name,
const std::string & service_name,
- int flags = address_configured);
+ resolver_query_base::flags resolve_flags = address_configured);
`` [''''»''' [link boost_asio.reference.ip__basic_resolver_query.basic_resolver_query.overload4 more...]]``
@@ -42635,7 +43265,7 @@
basic_resolver_query(
const std::string & service_name,
- int flags = passive|address_configured);
+ resolver_query_base::flags resolve_flags = passive|address_configured);
@@ -42652,7 +43282,7 @@
basic_resolver_query(
const protocol_type & protocol,
const std::string & service_name,
- int flags = passive|address_configured);
+ resolver_query_base::flags resolve_flags = passive|address_configured);
@@ -42669,7 +43299,7 @@
basic_resolver_query(
const std::string & host_name,
const std::string & service_name,
- int flags = address_configured);
+ resolver_query_base::flags resolve_flags = address_configured);
@@ -42687,7 +43317,7 @@
const protocol_type & protocol,
const std::string & host_name,
const std::string & service_name,
- int flags = address_configured);
+ resolver_query_base::flags resolve_flags = address_configured);
@@ -42706,9 +43336,33 @@
Determine the canonical name of the host specified in the query.
- static const int canonical_name = implementation_defined;
+ static const flags canonical_name = implementation_defined;
+
+
+
+[endsect]
+
+
+
+[section:flags ip::basic_resolver_query::flags]
+
+
+['Inherited from ip::resolver_query_base.]
+
+[indexterm2 flags..ip::basic_resolver_query]
+A bitmask type (C++ Std [lib.bitmask.types]).
+
+
+ typedef unspecified flags;
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/ip/basic_resolver_query.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
[endsect]
@@ -42751,7 +43405,7 @@
Host name should be treated as a numeric string defining an IPv4 or IPv6 address and no name resolution should be attempted.
- static const int numeric_host = implementation_defined;
+ static const flags numeric_host = implementation_defined;
@@ -42768,7 +43422,7 @@
Service name should be treated as a numeric string defining a port number and no name resolution should be attempted.
- static const int numeric_service = implementation_defined;
+ static const flags numeric_service = implementation_defined;
@@ -42785,7 +43439,7 @@
Indicate that returned endpoint is intended for use as a locally bound socket endpoint.
- static const int passive = implementation_defined;
+ static const flags passive = implementation_defined;
@@ -42837,7 +43491,7 @@
If the query protocol family is specified as IPv6, return IPv4-mapped IPv6 addresses on finding no IPv6 addresses.
- static const int v4_mapped = implementation_defined;
+ static const flags v4_mapped = implementation_defined;
@@ -43392,6 +44046,39 @@
Create an iterator from an endpoint, host name and service name. ]
]
+ [
+ [[link boost_asio.reference.ip__basic_resolver_iterator.operator__star_ [*operator *]]]
+ [Dereference an iterator. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_iterator.operator_plus__plus_ [*operator++]]]
+ [Increment operator (prefix).
+
+ Increment operator (postfix). ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_iterator.operator_arrow_ [*operator->]]]
+ [Dereference an iterator. ]
+ ]
+
+]
+
+[heading Friends]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_iterator.operator_not__eq_ [*operator!=]]]
+ [Test two iterators for inequality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_iterator.operator_eq__eq_ [*operator==]]]
+ [Test two iterators for equality. ]
+ ]
+
]
The [link boost_asio.reference.ip__basic_resolver_iterator `ip::basic_resolver_iterator`] class template is used to define iterators over the results returned by a resolver.
@@ -43439,6 +44126,13 @@
[
+ [[link boost_asio.reference.ip__basic_resolver_query.flags [*flags]]]
+ [A bitmask type (C++ Std \[lib.bitmask.types\]). ]
+
+ ]
+
+ [
+
[[link boost_asio.reference.ip__basic_resolver_query.protocol_type [*protocol_type]]]
[The protocol type associated with the endpoint query. ]
@@ -44206,6 +44900,19 @@
class resolver_query_base
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.ip__resolver_query_base.flags [*flags]]]
+ [A bitmask type (C++ Std \[lib.bitmask.types\]). ]
+
+ ]
+
+]
+
[heading Protected Member Functions]
[table
[[Name][Description]]
@@ -44271,7 +44978,7 @@
Only return IPv4 addresses if a non-loopback IPv4 address is configured for the system. Only return IPv6 addresses if a non-loopback IPv6 address is configured for the system.
- static const int address_configured = implementation_defined;
+ static const flags address_configured = implementation_defined;
@@ -44285,7 +44992,7 @@
If used with v4\_mapped, return all matching IPv6 and IPv4 addresses.
- static const int all_matching = implementation_defined;
+ static const flags all_matching = implementation_defined;
@@ -44299,7 +45006,7 @@
Determine the canonical name of the host specified in the query.
- static const int canonical_name = implementation_defined;
+ static const flags canonical_name = implementation_defined;
@@ -44307,13 +45014,34 @@
+[section:flags ip::resolver_query_base::flags]
+
+[indexterm2 flags..ip::resolver_query_base]
+A bitmask type (C++ Std [lib.bitmask.types]).
+
+
+ typedef unspecified flags;
+
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/ip/resolver_query_base.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
[section:numeric_host ip::resolver_query_base::numeric_host]
[indexterm2 numeric_host..ip::resolver_query_base]
Host name should be treated as a numeric string defining an IPv4 or IPv6 address and no name resolution should be attempted.
- static const int numeric_host = implementation_defined;
+ static const flags numeric_host = implementation_defined;
@@ -44327,7 +45055,7 @@
Service name should be treated as a numeric string defining a port number and no name resolution should be attempted.
- static const int numeric_service = implementation_defined;
+ static const flags numeric_service = implementation_defined;
@@ -44341,7 +45069,7 @@
Indicate that returned endpoint is intended for use as a locally bound socket endpoint.
- static const int passive = implementation_defined;
+ static const flags passive = implementation_defined;
@@ -44355,7 +45083,7 @@
If the query protocol family is specified as IPv6, return IPv4-mapped IPv6 addresses on finding no IPv6 addresses.
- static const int v4_mapped = implementation_defined;
+ static const flags v4_mapped = implementation_defined;
@@ -45803,6 +46531,39 @@
Create an iterator from an endpoint, host name and service name. ]
]
+ [
+ [[link boost_asio.reference.ip__basic_resolver_iterator.operator__star_ [*operator *]]]
+ [Dereference an iterator. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_iterator.operator_plus__plus_ [*operator++]]]
+ [Increment operator (prefix).
+
+ Increment operator (postfix). ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_iterator.operator_arrow_ [*operator->]]]
+ [Dereference an iterator. ]
+ ]
+
+]
+
+[heading Friends]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_iterator.operator_not__eq_ [*operator!=]]]
+ [Test two iterators for inequality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_iterator.operator_eq__eq_ [*operator==]]]
+ [Test two iterators for equality. ]
+ ]
+
]
The [link boost_asio.reference.ip__basic_resolver_iterator `ip::basic_resolver_iterator`] class template is used to define iterators over the results returned by a resolver.
@@ -45850,6 +46611,13 @@
[
+ [[link boost_asio.reference.ip__basic_resolver_query.flags [*flags]]]
+ [A bitmask type (C++ Std \[lib.bitmask.types\]). ]
+
+ ]
+
+ [
+
[[link boost_asio.reference.ip__basic_resolver_query.protocol_type [*protocol_type]]]
[The protocol type associated with the endpoint query. ]
@@ -46881,6 +47649,39 @@
Create an iterator from an endpoint, host name and service name. ]
]
+ [
+ [[link boost_asio.reference.ip__basic_resolver_iterator.operator__star_ [*operator *]]]
+ [Dereference an iterator. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_iterator.operator_plus__plus_ [*operator++]]]
+ [Increment operator (prefix).
+
+ Increment operator (postfix). ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_iterator.operator_arrow_ [*operator->]]]
+ [Dereference an iterator. ]
+ ]
+
+]
+
+[heading Friends]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_iterator.operator_not__eq_ [*operator!=]]]
+ [Test two iterators for inequality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_iterator.operator_eq__eq_ [*operator==]]]
+ [Test two iterators for equality. ]
+ ]
+
]
The [link boost_asio.reference.ip__basic_resolver_iterator `ip::basic_resolver_iterator`] class template is used to define iterators over the results returned by a resolver.
@@ -46928,6 +47729,13 @@
[
+ [[link boost_asio.reference.ip__basic_resolver_query.flags [*flags]]]
+ [A bitmask type (C++ Std \[lib.bitmask.types\]). ]
+
+ ]
+
+ [
+
[[link boost_asio.reference.ip__basic_resolver_query.protocol_type [*protocol_type]]]
[The protocol type associated with the endpoint query. ]
Modified: branches/release/libs/asio/doc/reference.xsl
==============================================================================
--- branches/release/libs/asio/doc/reference.xsl (original)
+++ branches/release/libs/asio/doc/reference.xsl 2010-03-24 21:50:05 EDT (Wed, 24 Mar 2010)
@@ -94,6 +94,7 @@
<xsl:if test="
contains(compoundname, 'asio::') and
not(contains(compoundname, '::detail')) and
+ not(contains(compoundname, '::service::key')) and
not(contains(compoundname, '_handler'))">
<xsl:call-template name="class"/>
</xsl:if>
@@ -101,6 +102,7 @@
<xsl:otherwise>
<xsl:if test="
not(contains(ancestor::*/compoundname, '::detail')) and
+ not(contains(ancestor::*/compoundname, '::service::key')) and
not(contains(ancestor::*/compoundname, '_helper'))">
<xsl:call-template name="namespace-memberdef"/>
</xsl:if>
@@ -195,6 +197,12 @@
select="concat(substring-before($name, '!'), '_not_', substring-after($name, '!'))"/>
</xsl:call-template>
</xsl:when>
+ <xsl:when test="contains($name, '->')">
+ <xsl:call-template name="make-id">
+ <xsl:with-param name="name"
+ select="concat(substring-before($name, '->'), '_arrow_', substring-after($name, '->'))"/>
+ </xsl:call-template>
+ </xsl:when>
<xsl:when test="contains($name, '<')">
<xsl:call-template name="make-id">
<xsl:with-param name="name"
@@ -207,12 +215,36 @@
select="concat(substring-before($name, '>'), '_gt_', substring-after($name, '>'))"/>
</xsl:call-template>
</xsl:when>
+ <xsl:when test="contains($name, '[')">
+ <xsl:call-template name="make-id">
+ <xsl:with-param name="name"
+ select="concat(substring-before($name, '['), '_lb_', substring-after($name, '['))"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="contains($name, ']')">
+ <xsl:call-template name="make-id">
+ <xsl:with-param name="name"
+ select="concat(substring-before($name, ']'), '_rb_', substring-after($name, ']'))"/>
+ </xsl:call-template>
+ </xsl:when>
<xsl:when test="contains($name, '+')">
<xsl:call-template name="make-id">
<xsl:with-param name="name"
select="concat(substring-before($name, '+'), '_plus_', substring-after($name, '+'))"/>
</xsl:call-template>
</xsl:when>
+ <xsl:when test="contains($name, '-')">
+ <xsl:call-template name="make-id">
+ <xsl:with-param name="name"
+ select="concat(substring-before($name, '-'), '_minus_', substring-after($name, '-'))"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="contains($name, '*')">
+ <xsl:call-template name="make-id">
+ <xsl:with-param name="name"
+ select="concat(substring-before($name, '*'), '_star_', substring-after($name, '*'))"/>
+ </xsl:call-template>
+ </xsl:when>
<xsl:when test="contains($name, '~')">
<xsl:call-template name="make-id">
<xsl:with-param name="name"
@@ -489,6 +521,30 @@
</xsl:template>
+<xsl:template name="escape-name">
+ <xsl:param name="text"/>
+ <xsl:choose>
+ <xsl:when test="contains($text, '[')">
+ <xsl:value-of select="substring-before($text, '[')"/>
+ <xsl:text>\[</xsl:text>
+ <xsl:call-template name="escape-name">
+ <xsl:with-param name="text" select="substring-after($text, '[')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="contains($text, ']')">
+ <xsl:value-of select="substring-before($text, ']')"/>
+ <xsl:text>\]</xsl:text>
+ <xsl:call-template name="escape-name">
+ <xsl:with-param name="text" select="substring-after($text, ']')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$text"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
<xsl:template match="ref[@kindref='compound']" mode="markup">
<xsl:variable name="name">
<xsl:value-of select="."/>
@@ -669,7 +725,7 @@
<xsl:when test="count(name) > 0">
[[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:call-template name="escape-name"><xsl:with-param name="text" select="briefdescription"/></xsl:call-template>]
</xsl:when>
<xsl:otherwise>
<xsl:variable name="type-name">
@@ -707,6 +763,11 @@
<xsl:variable name="name">
<xsl:value-of select="name"/>
</xsl:variable>
+ <xsl:variable name="escaped-name">
+ <xsl:call-template name="escape-name">
+ <xsl:with-param name="text" select="$name"/>
+ </xsl:call-template>
+ </xsl:variable>
<xsl:variable name="id">
<xsl:call-template name="make-id">
<xsl:with-param name="name" select="$name"/>
@@ -728,7 +789,7 @@
<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:text>]]]
+ <xsl:text> </xsl:text>[*<xsl:value-of select="$escaped-name"/><xsl:text>]]]
[</xsl:text><xsl:value-of select="briefdescription"/>
</xsl:if>
<xsl:if test="not($overload-position = 1) and not(briefdescription = preceding-sibling::*/briefdescription)">
@@ -945,6 +1006,11 @@
<xsl:variable name="name">
<xsl:value-of select="name"/>
</xsl:variable>
+ <xsl:variable name="escaped-name">
+ <xsl:call-template name="escape-name">
+ <xsl:with-param name="text" select="$name"/>
+ </xsl:call-template>
+ </xsl:variable>
<xsl:variable name="id">
<xsl:call-template name="make-id">
<xsl:with-param name="name" select="$name"/>
@@ -966,10 +1032,10 @@
<xsl:if test="$overload-count > 1 and $overload-position = 1">
[section:<xsl:value-of select="$id"/><xsl:text> </xsl:text>
-<xsl:value-of select="$class-name"/>::<xsl:value-of select="$name"/>]
+<xsl:value-of select="$class-name"/>::<xsl:value-of select="$escaped-name"/>]
<xsl:text>[indexterm2 </xsl:text>
-<xsl:value-of select="$name"/>
+<xsl:value-of select="$escaped-name"/>
<xsl:text>..</xsl:text>
<xsl:value-of select="$class-name"/>
<xsl:text>] </xsl:text>
@@ -1005,7 +1071,7 @@
[section:<xsl:if test="$overload-count = 1"><xsl:value-of select="$id"/></xsl:if>
<xsl:if test="$overload-count > 1">overload<xsl:value-of select="$overload-position"/></xsl:if>
-<xsl:text> </xsl:text><xsl:value-of select="$class-name"/>::<xsl:value-of select="$name"/>
+<xsl:text> </xsl:text><xsl:value-of select="$class-name"/>::<xsl:value-of select="$escaped-name"/>
<xsl:if test="$overload-count > 1"> (<xsl:value-of
select="$overload-position"/> of <xsl:value-of select="$overload-count"/> overloads)</xsl:if>]
@@ -1020,7 +1086,7 @@
<xsl:if test="$overload-count = 1">
<xsl:text>[indexterm2 </xsl:text>
- <xsl:value-of select="$name"/>
+ <xsl:value-of select="$escaped-name"/>
<xsl:text>..</xsl:text>
<xsl:value-of select="$class-name"/>
<xsl:text>] </xsl:text>
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