| [/ |
| / Copyright (c) 2003-2010 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:MutableBufferSequence Mutable buffer sequence requirements] |
| |
| In the table below, `X` denotes a class containing objects of type `T`, `a` |
| denotes a value of type `X` and `u` denotes an identifier. |
| |
| [table MutableBufferSequence requirements |
| [[expression] [return type] [assertion/note\npre/post-condition]] |
| [ |
| [`X::value_type`] |
| [`T`] |
| [`T` meets the requirements for [link |
| boost_asio.reference.ConvertibleToMutableBuffer |
| ConvertibleToMutableBuffer].] |
| ] |
| [ |
| [`X::const_iterator`] |
| [iterator type pointing to `T`] |
| [`const_iterator` meets the requirements for bidirectional iterators |
| (C++ Std, 24.1.4).] |
| ] |
| [ |
| [`X(a);`] |
| [] |
| [post: `equal_mutable_buffer_seq(a, X(a))` where the binary predicate |
| `equal_mutable_buffer_seq` is defined as |
| `` |
| bool equal_mutable_buffer_seq( |
| const X& x1, const X& x2) |
| { |
| return |
| distance(x1.begin(), x1.end()) |
| == distance(x2.begin(), x2.end()) |
| && equal(x1.begin(), x1.end(), |
| x2.begin(), equal_buffer); |
| } |
| `` |
| and the binary predicate `equal_buffer` is defined as |
| `` |
| bool equal_buffer( |
| const X::value_type& v1, |
| const X::value_type& v2) |
| { |
| mutable_buffer b1(v1); |
| mutable_buffer b2(v2); |
| return |
| buffer_cast<const void*>(b1) |
| == buffer_cast<const void*>(b2) |
| && buffer_size(b1) == buffer_size(b2); |
| } |
| ``] |
| ] |
| [ |
| [`X u(a);`] |
| [] |
| [post: |
| `` |
| distance(a.begin(), a.end()) |
| == distance(u.begin(), u.end()) |
| && equal(a.begin(), a.end(), |
| u.begin(), equal_buffer) |
| `` |
| where the binary predicate `equal_buffer` is defined as |
| `` |
| bool equal_buffer( |
| const X::value_type& v1, |
| const X::value_type& v2) |
| { |
| mutable_buffer b1(v1); |
| mutable_buffer b2(v2); |
| return |
| buffer_cast<const void*>(b1) |
| == buffer_cast<const void*>(b2) |
| && buffer_size(b1) == buffer_size(b2); |
| } |
| ``] |
| ] |
| [ |
| [`(&a)->~X();`] |
| [`void`] |
| [note: the destructor is applied to every element of `a`; all the memory |
| is deallocated.] |
| ] |
| [ |
| [`a.begin();`] |
| [`const_iterator` or convertible to `const_iterator`] |
| [] |
| ] |
| [ |
| [`a.end();`] |
| [`const_iterator` or convertible to `const_iterator`] |
| [] |
| ] |
| ] |
| |
| [endsect] |