一块原始数据。 请注意,如果需要更多容量,则会分配一个新的内存块,并 删除旧的内存块。这意味着默认情况下,缓冲区只能增长。要释放内存,使用 clear
或 pop
。
更多...
#include <Buffer.h>
Public 类型 | |
成员类型 | |
using | value_type = unsigned char |
using | size_type = uint32_t |
using | iterator = value_type * |
using | const_iterator = const value_type * |
Public 成员函数 | |
构造与析构 | |
Buffer ()=default | |
创建一个空的缓冲区。 | |
Buffer (size_type size) | |
创建一个分配了 size字节的缓冲区。 | |
Buffer (uint64_t size) | |
创建一个分配了 size字节的缓冲区。 | |
template<typename T > | |
Buffer (const T &source) | |
将 source复制到此缓冲区中。分配所需的内存。 | |
Buffer (const value_type *data, size_type size) | |
Buffer (const value_type *data, uint64_t size) | |
创建一个分配了 size字节的缓冲区。 | |
Buffer (const Buffer &)=delete | |
Buffer (Buffer &&rhs) noexcept | |
~Buffer () | |
任务赋值 | |
Buffer & | operator= (const Buffer &)=delete |
Buffer & | operator= (Buffer &&rhs) noexcept |
数据访问 | |
const value_type & | operator[] (size_t i) const |
访问位置 i处的字节 | |
value_type & | operator[] (size_t i) |
Access the byte at position i. | |
const value_type * | data () const noexcept |
直接访问分配的内存,如果没有分配内存则返回 nullptr。 | |
value_type * | data () noexcept |
Direct access to the allocated memory or nullptr if no memory is allocated. | |
boost::asio::const_buffer | cbuffer () const noexcept |
从这个缓冲区创建一个boost::asio::buffer。 | |
boost::asio::const_buffer | buffer () const noexcept |
从这个缓冲区创建一个boost::asio::buffer。 | |
boost::asio::mutable_buffer | buffer () noexcept |
从这个缓冲区创建一个boost::asio::buffer。 | |
迭代器 | |
const_iterator | cbegin () const noexcept |
const_iterator | begin () const noexcept |
iterator | begin () noexcept |
const_iterator | cend () const noexcept |
const_iterator | end () const noexcept |
iterator | end () noexcept |
修改器 | |
void | reset (size_type size) |
重置缓冲区的大小。如果容量不足,当前内存将被丢弃,并分配一个新的大小为 size的内存块。 allocated. | |
void | reset (uint64_t size) |
重置缓冲区的大小。如果容量不足,当前内存将被丢弃,并分配一个新的大小为 size的内存块。 allocated. | |
void | resize (uint64_t size) |
调整缓冲区的大小。如果容量不足,将分配一个新的大小为 size的内存块,并复制数据。 | |
std::unique_ptr< value_type[]> | pop () noexcept |
释放此缓冲区的内容,并将其大小和容量设置为零。 | |
void | clear () noexcept |
清除此缓冲区的内容,并将其大小和容量设置为零。 删除已分配的内存。 | |
copy_from | |
template<typename T > | |
void | copy_from (const T &source) |
将 source复制到此缓冲区。如果需要,则分配内存。 | |
void | copy_from (const value_type *data, size_type size) |
Copy size bytes of the memory pointed by data into this buffer. | |
void | copy_from (size_type offset, const Buffer &rhs) |
将 source复制到此缓冲区,在前面留出 offset字节未初始化的空间。 如果需要,则分配内存。 | |
template<typename T > | |
std::enable_if< boost::asio::is_const_buffer_sequence< T >::value >::type | copy_from (size_type offset, const T &source) |
将 source复制到此缓冲区,在前面留出 offset字节未初始化的空间。 如果需要,则分配内存。 | |
template<typename T > | |
std::enable_if<!boost::asio::is_const_buffer_sequence< T >::value >::type | copy_from (size_type offset, const T &source) |
将 source复制到此缓冲区,在前面留出 offset字节未初始化的空间。 如果需要,则分配内存。 | |
void | copy_from (size_type offset, const value_type *data, size_type size) |
将 data指向的内存中的 size字节复制到此缓冲区, 在前面留出 offset字节未初始化的空间。 如果需要,则分配内存。 | |
Private 成员函数 | |
void | ReuseThisBuffer () |
Private 属性 | |
size_type | _capacity = 0u |
std::unique_ptr< value_type[]> | _data = nullptr |
std::weak_ptr< BufferPool > | _parent_pool |
size_type | _size = 0u |
友元 | |
class | BufferPool |
class | BufferView |
容量 | |
bool | empty () const noexcept |
size_type | size () const noexcept |
size_type | capacity () const noexcept |
static constexpr size_type | max_size () noexcept |
一块原始数据。 请注意,如果需要更多容量,则会分配一个新的内存块,并 删除旧的内存块。这意味着默认情况下,缓冲区只能增长。要释放内存,使用 clear
或 pop
。
这是一个仅可移动的类型,设计为按值传递时成本较低。如果缓冲区 从BufferPool中检索,则在销毁时内存会自动推回到池中。
在文件 carla/Buffer.h 第 52 行定义.
using carla::Buffer::const_iterator = const value_type * |
在文件 carla/Buffer.h 第 67 行定义.
using carla::Buffer::iterator = value_type * |
在文件 carla/Buffer.h 第 65 行定义.
using carla::Buffer::size_type = uint32_t |
在文件 carla/Buffer.h 第 63 行定义.
using carla::Buffer::value_type = unsigned char |
在文件 carla/Buffer.h 第 61 行定义.
|
default |
创建一个空的缓冲区。
|
inlineexplicit |
创建一个分配了 size字节的缓冲区。
在文件 carla/Buffer.h 第 82 行定义.
|
inlineexplicit |
创建一个分配了 size字节的缓冲区。
在文件 carla/Buffer.h 第 91 行定义.
引用了 max_size(), size() , 以及 carla::throw_exception().
|
inlineexplicit |
|
inlineexplicit |
|
inlineexplicit |
创建一个分配了 size字节的缓冲区。
在文件 carla/Buffer.h 第 117 行定义.
引用了 max_size(), size() , 以及 carla::throw_exception().
|
delete |
|
inlinenoexcept |
在文件 carla/Buffer.h 第 131 行定义.
|
inline |
|
inlinenoexcept |
在文件 carla/Buffer.h 第 265 行定义.
引用了 cbegin().
被这些函数引用 carla::sensor::RawData::begin(), carla::sensor::RawData::begin(), end() , 以及 carla::operator==().
|
inlinenoexcept |
在文件 carla/Buffer.h 第 270 行定义.
引用了 _data.
|
inlinenoexcept |
从这个缓冲区创建一个boost::asio::buffer。
在文件 carla/Buffer.h 第 213 行定义.
引用了 cbuffer().
被这些函数引用 carla::multigpu::IncomingMessage::buffer(), carla::streaming::detail::tcp::IncomingMessage::buffer(), copy_from() , 以及 copy_from().
|
inlinenoexcept |
从这个缓冲区创建一个boost::asio::buffer。
在文件 carla/Buffer.h 第 219 行定义.
|
inlinenoexcept |
|
inlinenoexcept |
在文件 carla/Buffer.h 第 260 行定义.
引用了 _data.
被这些函数引用 begin(), carla::BufferView::begin(), cend() , 以及 carla::BufferView::cend().
|
inlinenoexcept |
从这个缓冲区创建一个boost::asio::buffer。
在文件 carla/Buffer.h 第 207 行定义.
被这些函数引用 buffer().
|
inlinenoexcept |
|
inlinenoexcept |
|
inline |
将 source复制到此缓冲区。如果需要,则分配内存。
在文件 carla/Buffer.h 第 367 行定义.
引用了 copy_from().
被这些函数引用 Buffer(), Buffer(), copy_from(), copy_from(), copy_from(), copy_from(), copy_from(), resize(), carla::sensor::s11n::CAMDataSerializer::Serialize(), carla::sensor::s11n::CustomV2XDataSerializer::Serialize(), carla::sensor::s11n::LidarSerializer::Serialize(), carla::sensor::s11n::RadarSerializer::Serialize(), carla::sensor::s11n::SemanticLidarSerializer::Serialize(), TEST() , 以及 TEST().
|
inline |
Copy size bytes of the memory pointed by data into this buffer.
Allocates memory if necessary.
在文件 carla/Buffer.h 第 375 行定义.
引用了 copy_from(), data() , 以及 size().
将 source复制到此缓冲区,在前面留出 offset字节未初始化的空间。 如果需要,则分配内存。
在文件 carla/Buffer.h 第 383 行定义.
引用了 buffer() , 以及 copy_from().
|
inline |
将 source复制到此缓冲区,在前面留出 offset字节未初始化的空间。 如果需要,则分配内存。
在文件 carla/Buffer.h 第 392 行定义.
引用了 buffer(), DEBUG_ASSERT, DEBUG_ONLY, reset() , 以及 size().
|
inline |
将 source复制到此缓冲区,在前面留出 offset字节未初始化的空间。 如果需要,则分配内存。
在文件 carla/Buffer.h 第 408 行定义.
引用了 copy_from().
|
inline |
将 data指向的内存中的 size字节复制到此缓冲区, 在前面留出 offset字节未初始化的空间。 如果需要,则分配内存。
在文件 carla/Buffer.h 第 430 行定义.
引用了 copy_from(), data() , 以及 size().
|
inlinenoexcept |
直接访问分配的内存,如果没有分配内存则返回 nullptr。
在文件 carla/Buffer.h 第 193 行定义.
引用了 _data.
被这些函数引用 util::buffer::as_string(), buffer(), Buffer(), carla::BufferView::cbegin(), cbuffer(), carla::BufferView::cbuffer(), copy_from(), copy_from(), carla::BufferView::data(), carla::sensor::s11n::SensorHeaderSerializer::Deserialize(), carla::BufferView::operator[](), carla::multigpu::SecondaryCommands::process_command(), resize(), TEST(), TEST(), util::buffer::to_hex_string() , 以及 carla::MsgPack::UnPack().
|
inlinenoexcept |
Direct access to the allocated memory or nullptr if no memory is allocated.
在文件 carla/Buffer.h 第 200 行定义.
引用了 _data.
|
inlinenoexcept |
在文件 carla/Buffer.h 第 232 行定义.
引用了 _size.
|
inlinenoexcept |
在文件 carla/Buffer.h 第 280 行定义.
引用了 cend().
被这些函数引用 carla::sensor::RawData::end(), carla::sensor::RawData::end() , 以及 carla::operator==().
|
inlinenoexcept |
|
inlinestaticconstexprnoexcept |
在文件 carla/Buffer.h 第 159 行定义.
引用了 _capacity, _data, _parent_pool , 以及 _size.
|
inline |
|
inline |
|
inlinenoexcept |
|
inline |
重置缓冲区的大小。如果容量不足,当前内存将被丢弃,并分配一个新的大小为 size的内存块。 allocated.
在文件 carla/Buffer.h 第 300 行定义.
引用了 _capacity, _data, _size, carla::log_debug() , 以及 size().
被这些函数引用 carla::multigpu::IncomingMessage::buffer(), carla::streaming::detail::tcp::IncomingMessage::buffer(), copy_from(), reset(), resize() , 以及 TEST().
|
inline |
重置缓冲区的大小。如果容量不足,当前内存将被丢弃,并分配一个新的大小为 size的内存块。 allocated.
在文件 carla/Buffer.h 第 314 行定义.
引用了 max_size(), reset(), size() , 以及 carla::throw_exception().
|
inline |
调整缓冲区的大小。如果容量不足,将分配一个新的大小为 size的内存块,并复制数据。
在文件 carla/Buffer.h 第 325 行定义.
引用了 _capacity, _data, _size, copy_from(), data(), reset() , 以及 size().
|
private |
|
inlinenoexcept |
在文件 carla/Buffer.h 第 237 行定义.
引用了 _size.
被这些函数引用 util::buffer::as_string(), buffer(), Buffer(), Buffer(), Buffer(), cbuffer(), carla::BufferView::cbuffer(), cend(), carla::BufferView::cend(), copy_from(), copy_from(), copy_from(), carla::BufferView::empty(), end(), make_special_message(), carla::operator<<(), carla::operator==(), reset(), reset(), resize(), carla::BufferView::size(), TEST(), TEST(), TEST(), util::buffer::to_hex_string() , 以及 carla::MsgPack::UnPack().
|
friend |
在文件 carla/Buffer.h 第 444 行定义.
|
friend |
在文件 carla/Buffer.h 第 447 行定义.
|
private |
在文件 carla/Buffer.h 第 457 行定义.
被这些函数引用 capacity(), operator=(), pop(), reset(), resize() , 以及 ~Buffer().
|
private |
在文件 carla/Buffer.h 第 460 行定义.
被这些函数引用 begin(), cbegin(), data(), data(), operator=(), operator[](), operator[](), pop(), reset() , 以及 resize().
|
private |
在文件 carla/Buffer.h 第 450 行定义.
被这些函数引用 operator=(), carla::BufferPool::Pop() , 以及 ReuseThisBuffer().
|
private |
在文件 carla/Buffer.h 第 454 行定义.
被这些函数引用 empty(), operator=(), pop(), reset(), resize() , 以及 size().