Update type requirements to reflect support for movability.
diff --git a/asio/src/doc/requirements/DescriptorService.qbk b/asio/src/doc/requirements/DescriptorService.qbk index b1239b3..2c13627 100644 --- a/asio/src/doc/requirements/DescriptorService.qbk +++ b/asio/src/doc/requirements/DescriptorService.qbk
@@ -8,12 +8,12 @@ [section:DescriptorService Descriptor service requirements] A descriptor service must meet the requirements for an [link -asio.reference.IoObjectService I/O object service], as well as the -additional requirements listed below. +asio.reference.IoObjectService I/O object service] with support for movability, +as well as the additional requirements listed below. -In the table below, `X` denotes a descriptor service class, `a` denotes a value -of type `X`, `b` denotes a value of type `X::implementation_type`, `n` denotes -a value of type `X::native_handle_type`, `ec` denotes a value of type +In the table below, `X` denotes a descriptor service class, `a` and `ao` denote +values of type `X`, `b` and `c` denote values of type `X::implementation_type`, +`n` denotes a value of type `X::native_handle_type`, `ec` denotes a value of type `error_code`, `i` denotes a value meeting [link asio.reference.IoControlCommand `IoControlCommand`] requirements, and `u` and `v` denote identifiers. @@ -48,6 +48,28 @@ ] [ [`` + a.move_construct(b, c); + ``] + [] + [ + From [link asio.reference.IoObjectService IoObjectService] requirements. + The underlying native representation is moved from `c` to `b`. + ] + ] + [ + [`` + a.move_assign(b, ao, c); + ``] + [] + [ + From [link asio.reference.IoObjectService IoObjectService] requirements. + Implicitly cancels asynchronous operations associated with `b`, as if by + calling `a.close(b, ec)`. Then the underlying native representation is + moved from `c` to `b`. + ] + ] + [ + [`` a.assign(b, n, ec); ``] [`error_code`]
diff --git a/asio/src/doc/requirements/HandleService.qbk b/asio/src/doc/requirements/HandleService.qbk index baa0919..3f7d1d0 100644 --- a/asio/src/doc/requirements/HandleService.qbk +++ b/asio/src/doc/requirements/HandleService.qbk
@@ -8,13 +8,13 @@ [section:HandleService Handle service requirements] A handle service must meet the requirements for an [link -asio.reference.IoObjectService I/O object service], as well as the -additional requirements listed below. +asio.reference.IoObjectService I/O object service] with support for movability, +as well as the additional requirements listed below. -In the table below, `X` denotes a handle service class, `a` denotes a value of -type `X`, `b` denotes a value of type `X::implementation_type`, `n` denotes a -value of type `X::native_handle_type`, `ec` denotes a value of type -`error_code`, and `u` and `v` denote identifiers. +In the table below, `X` denotes a handle service class, `a` and `ao` denote +values of type `X`, `b` and `c` denote values of type `X::implementation_type`, +`n` denotes a value of type `X::native_handle_type`, `ec` denotes a value of +type `error_code`, and `u` and `v` denote identifiers. [table HandleService requirements [[expression] [return type] [assertion/note\npre/post-condition]] @@ -47,6 +47,28 @@ ] [ [`` + a.move_construct(b, c); + ``] + [] + [ + From [link asio.reference.IoObjectService IoObjectService] requirements. + The underlying native representation is moved from `c` to `b`. + ] + ] + [ + [`` + a.move_assign(b, ao, c); + ``] + [] + [ + From [link asio.reference.IoObjectService IoObjectService] requirements. + Implicitly cancels asynchronous operations associated with `b`, as if by + calling `a.close(b, ec)`. Then the underlying native representation is + moved from `c` to `b`. + ] + ] + [ + [`` a.assign(b, n, ec); ``] [`error_code`]
diff --git a/asio/src/doc/requirements/IoObjectService.qbk b/asio/src/doc/requirements/IoObjectService.qbk index 8ada186..8d65f51 100644 --- a/asio/src/doc/requirements/IoObjectService.qbk +++ b/asio/src/doc/requirements/IoObjectService.qbk
@@ -11,9 +11,9 @@ asio.reference.Service service], as well as the requirements listed below. -In the table below, `X` denotes an I/O object service class, `a` denotes a -value of type `X`, `b` denotes a value of type `X::implementation_type`, and -`u` denotes an identifier. +In the table below, `X` denotes an I/O object service class, `a` and `ao` denote +values of type `X`, `b` and `c` denote values of type `X::implementation_type`, +and `u` denotes an identifier. [table IoObjectService requirements [[expression] [return type] [assertion/note\npre/post-condition]] @@ -41,7 +41,21 @@ ``] [] [note: `destroy()` will only be called on a value that has previously been - initialised with `construct()`.] + initialised with `construct()` or `move_construct()`.] + ] + [ + [`` + a.move_construct(b, c); + ``] + [] + [note: only required for I/O objects that support movability.] + ] + [ + [`` + a.move_assign(b, ao, c); + ``] + [] + [note: only required for I/O objects that support movability.] ] ]
diff --git a/asio/src/doc/requirements/SerialPortService.qbk b/asio/src/doc/requirements/SerialPortService.qbk index 0483694..f2632ef 100644 --- a/asio/src/doc/requirements/SerialPortService.qbk +++ b/asio/src/doc/requirements/SerialPortService.qbk
@@ -8,13 +8,13 @@ [section:SerialPortService Serial port service requirements] A serial port service must meet the requirements for an [link -asio.reference.IoObjectService I/O object service], as well as the -additional requirements listed below. +asio.reference.IoObjectService I/O object service] with support for movability, +as well as the additional requirements listed below. -In the table below, `X` denotes a serial port service class, `a` denotes a -value of type `X`, `d` denotes a serial port device name of type `std::string`, -`b` denotes a value of type `X::implementation_type`, `n` denotes a value of -type `X::native_handle_type`, `ec` denotes a value of type `error_code`, `s` +In the table below, `X` denotes a serial port service class, `a` and `ao` denote +values of type `X`, `d` denotes a serial port device name of type `std::string`, +`b` and `c` denote values of type `X::implementation_type`, `n` denotes a value +of type `X::native_handle_type`, `ec` denotes a value of type `error_code`, `s` denotes a value meeting [link asio.reference.SettableSerialPortOption `SettableSerialPortOption`] requirements, `g` denotes a value meeting [link asio.reference.GettableSerialPortOption `GettableSerialPortOption`] @@ -57,6 +57,28 @@ ] [ [`` + a.move_construct(b, c); + ``] + [] + [ + From [link asio.reference.IoObjectService IoObjectService] requirements. + The underlying native representation is moved from `c` to `b`. + ] + ] + [ + [`` + a.move_assign(b, ao, c); + ``] + [] + [ + From [link asio.reference.IoObjectService IoObjectService] requirements. + Implicitly cancels asynchronous operations associated with `b`, as if by + calling `a.close(b, ec)`. Then the underlying native representation is + moved from `c` to `b`. + ] + ] + [ + [`` const std::string& u = d; a.open(b, u, ec); ``]
diff --git a/asio/src/doc/requirements/SocketAcceptorService.qbk b/asio/src/doc/requirements/SocketAcceptorService.qbk index 9e239e6..f0744e7 100644 --- a/asio/src/doc/requirements/SocketAcceptorService.qbk +++ b/asio/src/doc/requirements/SocketAcceptorService.qbk
@@ -12,20 +12,19 @@ additional requirements listed below. In the table below, `X` denotes a socket acceptor service class for protocol -[link asio.reference.Protocol `Protocol`], `a` denotes a value of type -`X`, `b` denotes a value of type `X::implementation_type`, `p` denotes a value -of type `Protocol`, `n` denotes a value of type `X::native_handle_type`, `e` -denotes a value of type `Protocol::endpoint`, `ec` denotes a value of type +[link asio.reference.Protocol `Protocol`], `a` and `ao` denote values of type +`X`, `b` and `c` denote values of type `X::implementation_type`, `p` denotes a +value of type `Protocol`, `n` denotes a value of type `X::native_handle_type`, +`e` denotes a value of type `Protocol::endpoint`, `ec` denotes a value of type `error_code`, `s` denotes a value meeting [link asio.reference.SettableSocketOption `SettableSocketOption`] requirements, `g` denotes a value meeting [link asio.reference.GettableSocketOption `GettableSocketOption`] requirements, `i` denotes a value meeting [link -asio.reference.IoControlCommand `IoControlCommand`] requirements, `k` -denotes a value of type `basic_socket<Protocol, SocketService>` where -`SocketService` is a type meeting [link asio.reference.SocketService -socket service] requirements, `ah` denotes a value meeting [link -asio.reference.AcceptHandler `AcceptHandler`] requirements, and `u` -and `v` denote identifiers. +asio.reference.IoControlCommand `IoControlCommand`] requirements, `k` denotes a +value of type `basic_socket<Protocol, SocketService>` where `SocketService` is +a type meeting [link asio.reference.SocketService socket service] requirements, +`ah` denotes a value meeting [link asio.reference.AcceptHandler +`AcceptHandler`] requirements, and `u` and `v` denote identifiers. [table SocketAcceptorService requirements [[expression] [return type] [assertion/note\npre/post-condition]] @@ -58,6 +57,28 @@ ] [ [`` + a.move_construct(b, c); + ``] + [] + [ + From [link asio.reference.IoObjectService IoObjectService] requirements. + The underlying native representation is moved from `c` to `b`. + ] + ] + [ + [`` + a.move_assign(b, ao, c); + ``] + [] + [ + From [link asio.reference.IoObjectService IoObjectService] requirements. + Implicitly cancels asynchronous operations associated with `b`, as if by + calling `a.close(b, ec)`. Then the underlying native representation is + moved from `c` to `b`. + ] + ] + [ + [`` a.open(b, p, ec); ``] [`error_code`]
diff --git a/asio/src/doc/requirements/SocketService.qbk b/asio/src/doc/requirements/SocketService.qbk index 97ebddf..110b8a1 100644 --- a/asio/src/doc/requirements/SocketService.qbk +++ b/asio/src/doc/requirements/SocketService.qbk
@@ -8,13 +8,13 @@ [section:SocketService Socket service requirements] A socket service must meet the requirements for an [link -asio.reference.IoObjectService I/O object service], as well as the -additional requirements listed below. +asio.reference.IoObjectService I/O object service] with support for movability, +as well as the additional requirements listed below. In the table below, `X` denotes a socket service class for protocol [link -asio.reference.Protocol `Protocol`], `a` denotes a value of type `X`, -`b` denotes a value of type `X::implementation_type`, `p` denotes a value of -type `Protocol`, `n` denotes a value of type `X::native_handle_type`, `e` +asio.reference.Protocol `Protocol`], `a` and `ao` denote values of type `X`, +`b` and `c` denote values of type `X::implementation_type`, `p` denotes a value +of type `Protocol`, `n` denotes a value of type `X::native_handle_type`, `e` denotes a value of type `Protocol::endpoint`, `ec` denotes a value of type `error_code`, `s` denotes a value meeting [link asio.reference.SettableSocketOption `SettableSocketOption`] requirements, `g` @@ -56,6 +56,28 @@ ] [ [`` + a.move_construct(b, c); + ``] + [] + [ + From [link asio.reference.IoObjectService IoObjectService] requirements. + The underlying native representation is moved from `c` to `b`. + ] + ] + [ + [`` + a.move_assign(b, ao, c); + ``] + [] + [ + From [link asio.reference.IoObjectService IoObjectService] requirements. + Implicitly cancels asynchronous operations associated with `b`, as if by + calling `a.close(b, ec)`. Then the underlying native representation is + moved from `c` to `b`. + ] + ] + [ + [`` a.open(b, p, ec); ``] [`error_code`]