Holds a registered buffer over modifiable data. * Satisfies the @c MutableBufferSequence type requirements. */
| 82 | * Satisfies the @c MutableBufferSequence type requirements. |
| 83 | */ |
| 84 | class mutable_registered_buffer |
| 85 | { |
| 86 | public: |
| 87 | #if !defined(ASIO_HAS_DECLTYPE) \ |
| 88 | && !defined(GENERATING_DOCUMENTATION) |
| 89 | typedef mutable_buffer value_type; |
| 90 | #endif // !defined(ASIO_HAS_DECLTYPE) |
| 91 | // && !defined(GENERATING_DOCUMENTATION) |
| 92 | |
| 93 | /// Default constructor creates an invalid registered buffer. |
| 94 | mutable_registered_buffer() ASIO_NOEXCEPT |
| 95 | : buffer_(), |
| 96 | id_() |
| 97 | { |
| 98 | } |
| 99 | |
| 100 | /// Get the underlying mutable buffer. |
| 101 | const mutable_buffer& buffer() const ASIO_NOEXCEPT |
| 102 | { |
| 103 | return buffer_; |
| 104 | } |
| 105 | |
| 106 | /// Get a pointer to the beginning of the memory range. |
| 107 | /** |
| 108 | * @returns <tt>buffer().data()</tt>. |
| 109 | */ |
| 110 | void* data() const ASIO_NOEXCEPT |
| 111 | { |
| 112 | return buffer_.data(); |
| 113 | } |
| 114 | |
| 115 | /// Get the size of the memory range. |
| 116 | /** |
| 117 | * @returns <tt>buffer().size()</tt>. |
| 118 | */ |
| 119 | std::size_t size() const ASIO_NOEXCEPT |
| 120 | { |
| 121 | return buffer_.size(); |
| 122 | } |
| 123 | |
| 124 | /// Get the registered buffer identifier. |
| 125 | const registered_buffer_id& id() const ASIO_NOEXCEPT |
| 126 | { |
| 127 | return id_; |
| 128 | } |
| 129 | |
| 130 | /// Move the start of the buffer by the specified number of bytes. |
| 131 | mutable_registered_buffer& operator+=(std::size_t n) ASIO_NOEXCEPT |
| 132 | { |
| 133 | buffer_ += n; |
| 134 | return *this; |
| 135 | } |
| 136 | |
| 137 | private: |
| 138 | friend class detail::buffer_registration_base; |
| 139 | |
| 140 | // Hidden constructor used by buffer registration and operators. |
| 141 | mutable_registered_buffer(const mutable_buffer& b, |
no test coverage detected