Add DynamicBufferSequence requirements.
diff --git a/asio/src/doc/reference.xsl b/asio/src/doc/reference.xsl
index 69eefdd..ca5de0d 100644
--- a/asio/src/doc/reference.xsl
+++ b/asio/src/doc/reference.xsl
@@ -51,6 +51,7 @@
 [include requirements/ConvertibleToMutableBuffer.qbk]
 [include requirements/DatagramSocketService.qbk]
 [include requirements/DescriptorService.qbk]
+[include requirements/DynamicBufferSequence.qbk]
 [include requirements/Endpoint.qbk]
 [include requirements/Executor.qbk]
 [include requirements/GettableSerialPortOption.qbk]
diff --git a/asio/src/doc/requirements/DynamicBufferSequence.qbk b/asio/src/doc/requirements/DynamicBufferSequence.qbk
new file mode 100644
index 0000000..59bafff
--- /dev/null
+++ b/asio/src/doc/requirements/DynamicBufferSequence.qbk
@@ -0,0 +1,96 @@
+[/
+ / Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+ /
+ / Distributed under the Boost Software License, Version 1.0. (See accompanying
+ / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ /]
+
+[section:DynamicBufferSequence Dynamic buffer sequence requirements]
+
+A dynamic buffer sequence encapsulates memory storage that may be automatically
+resized as required, where the memory is divided into an input sequence
+followed by an output sequence. These memory regions are internal to the
+dynamic buffer sequence, but direct access to the elements is provided to
+permit them to be efficiently used with I/O operations, such as the `send` or
+`receive` operations of a socket. Data written to the output sequence of a
+dynamic buffer sequence object is appended to the input sequence of the same
+object.
+
+A dynamic buffer sequence type `X` shall satisfy the requirements of
+`MoveConstructible` (C++ Std, [moveconstructible]) types in addition to those
+listed below.
+
+In the table below, `X` denotes a dynamic buffer sequence class, `x` denotes a
+value of type `X&`, `x1` denotes values of type `const X&`, and `n` denotes a
+value of type `size_t`, and `u` denotes an identifier.
+
+[table DynamicBufferSequence requirements
+  [[expression] [type] [assertion/note\npre/post-conditions]]
+  [
+    [`X::const_buffers_type`]
+    [type meeting [link asio.reference.ConstBufferSequence ConstBufferSequence]
+     requirements.]
+    [This type represents the memory associated with the input sequence.]
+  ]
+  [
+    [`X::mutable_buffers_type`]
+    [type meeting [link asio.reference.MutableBufferSequence MutableBufferSequence]
+     requirements.]
+    [This type represents the memory associated with the output sequence.]
+  ]
+  [
+    [`x1.size()`]
+    [`size_t`]
+    [Returns the size, in bytes, of the input sequence.]
+  ]
+  [
+    [`x1.max_size()`]
+    [`size_t`]
+    [Returns the permitted maximum of the sum of the sizes of the input
+     sequence and output sequence.]
+  ]
+  [
+    [`x1.capacity()`]
+    [`size_t`]
+    [Returns the maximum sum of the sizes of the input sequence and output
+     sequence that the dynamic buffer sequence can hold without requiring
+     reallocation.]
+  ]
+  [
+    [`x1.data()`]
+    [`X::const_buffers_type`]
+    [Returns a constant buffer sequence `u` that represents the memory
+     associated with the input sequence, and where `buffer_size(u) == size()`.]
+  ]
+  [
+    [`x.prepare(n)`]
+    [`X::mutable_buffers_type`]
+    [Requires: `size() + n <= max_size()`.\n
+     \n
+     Returns a mutable buffer sequence `u` representing the output sequence, and
+     where `buffer_size(u) == n`. The dynamic buffer sequence reallocates
+     memory as required. All constant or mutable buffer sequences previously
+     obtained using `data()` or `prepare()` are invalidated.\n
+     \n
+     Throws: `length_error` if `size() + n > max_size()`.]
+  ]
+  [
+    [`x.commit(n)`]
+    []
+    [Appends `n` bytes from the start of the output sequence to the end of the
+     input sequence. The remainder of the output sequence is discarded. If `n`
+     is greater than the size of the output sequence, the entire output sequence
+     is appended to the input sequence. All constant or mutable buffer sequences
+     previously obtained using `data()` or `prepare()` are invalidated.]
+  ]
+  [
+    [`x.consume(n)`]
+    []
+    [Removes `n` bytes from beginning of the input sequence. If `n` is greater
+     than the size of the input sequence, the entire input sequence is removed.
+     All constant or mutable buffer sequences previously obtained using `data()`
+     or `prepare()` are invalidated.]
+  ]
+]
+
+[endsect]