CARLA
 
载入中...
搜索中...
未找到
Private 成员函数 | Private 属性 | 友元 | 所有成员列表
carla::Buffer类 参考

一块原始数据。 请注意,如果需要更多容量,则会分配一个新的内存块,并 删除旧的内存块。这意味着默认情况下,缓冲区只能增长。要释放内存,使用 clearpop更多...

#include <Buffer.h>

+ carla::Buffer 的协作图:

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 ()
 
任务赋值
Bufferoperator= (const Buffer &)=delete
 
Bufferoperator= (Buffer &&rhs) noexcept
 
数据访问
const value_typeoperator[] (size_t i) const
 访问位置 i处的字节
 
value_typeoperator[] (size_t i)
 Access the byte at position i.
 
const value_typedata () const noexcept
 直接访问分配的内存,如果没有分配内存则返回 nullptr。
 
value_typedata () 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
 

详细描述

一块原始数据。 请注意,如果需要更多容量,则会分配一个新的内存块,并 删除旧的内存块。这意味着默认情况下,缓冲区只能增长。要释放内存,使用 clearpop

这是一个仅可移动的类型,设计为按值传递时成本较低。如果缓冲区 从BufferPool中检索,则在销毁时内存会自动推回到池中。

警告
创建一个大于max_size() 的缓冲区是未定义的。

在文件 carla/Buffer.h52 行定义.

成员类型定义说明

◆ const_iterator

在文件 carla/Buffer.h67 行定义.

◆ iterator

在文件 carla/Buffer.h65 行定义.

◆ size_type

using carla::Buffer::size_type = uint32_t

在文件 carla/Buffer.h63 行定义.

◆ value_type

using carla::Buffer::value_type = unsigned char

在文件 carla/Buffer.h61 行定义.

构造及析构函数说明

◆ Buffer() [1/8]

carla::Buffer::Buffer ( )
default

创建一个空的缓冲区。

◆ Buffer() [2/8]

carla::Buffer::Buffer ( size_type size)
inlineexplicit

创建一个分配了 size字节的缓冲区。

在文件 carla/Buffer.h82 行定义.

◆ Buffer() [3/8]

carla::Buffer::Buffer ( uint64_t size)
inlineexplicit

创建一个分配了 size字节的缓冲区。

在文件 carla/Buffer.h91 行定义.

引用了 max_size(), size() , 以及 carla::throw_exception().

+ 函数调用图:

◆ Buffer() [4/8]

template<typename T >
carla::Buffer::Buffer ( const T & source)
inlineexplicit

source复制到此缓冲区中。分配所需的内存。

在文件 carla/Buffer.h104 行定义.

引用了 copy_from().

+ 函数调用图:

◆ Buffer() [5/8]

carla::Buffer::Buffer ( const value_type * data,
size_type size )
inlineexplicit

在文件 carla/Buffer.h110 行定义.

引用了 copy_from(), data() , 以及 size().

+ 函数调用图:

◆ Buffer() [6/8]

carla::Buffer::Buffer ( const value_type * data,
uint64_t size )
inlineexplicit

创建一个分配了 size字节的缓冲区。

在文件 carla/Buffer.h117 行定义.

引用了 max_size(), size() , 以及 carla::throw_exception().

+ 函数调用图:

◆ Buffer() [7/8]

carla::Buffer::Buffer ( const Buffer & )
delete

◆ Buffer() [8/8]

carla::Buffer::Buffer ( Buffer && rhs)
inlinenoexcept

在文件 carla/Buffer.h131 行定义.

◆ ~Buffer()

carla::Buffer::~Buffer ( )
inline

在文件 carla/Buffer.h141 行定义.

引用了 _capacity , 以及 ReuseThisBuffer().

+ 函数调用图:

成员函数说明

◆ begin() [1/2]

const_iterator carla::Buffer::begin ( ) const
inlinenoexcept

在文件 carla/Buffer.h265 行定义.

引用了 cbegin().

被这些函数引用 carla::sensor::RawData::begin(), carla::sensor::RawData::begin(), end() , 以及 carla::operator==().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ begin() [2/2]

iterator carla::Buffer::begin ( )
inlinenoexcept

在文件 carla/Buffer.h270 行定义.

引用了 _data.

◆ buffer() [1/2]

boost::asio::const_buffer carla::Buffer::buffer ( ) const
inlinenoexcept

从这个缓冲区创建一个boost::asio::buffer。

警告
Boost.Asio缓冲区不拥有数据的所有权。调用者必须确保使用Asio缓冲区时不能删除此缓冲区所持有的内存。

在文件 carla/Buffer.h213 行定义.

引用了 cbuffer().

被这些函数引用 carla::multigpu::IncomingMessage::buffer(), carla::streaming::detail::tcp::IncomingMessage::buffer(), copy_from() , 以及 copy_from().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ buffer() [2/2]

boost::asio::mutable_buffer carla::Buffer::buffer ( )
inlinenoexcept

从这个缓冲区创建一个boost::asio::buffer。

警告
Boost.Asio缓冲区不拥有数据的所有权。调用者必须确保使用Asio缓冲区时不能删除此缓冲区所持有的内存。

在文件 carla/Buffer.h219 行定义.

引用了 data() , 以及 size().

+ 函数调用图:

◆ capacity()

size_type carla::Buffer::capacity ( ) const
inlinenoexcept

在文件 carla/Buffer.h247 行定义.

引用了 _capacity.

被这些函数引用 carla::BufferView::capacity().

+ 这是这个函数的调用关系图:

◆ cbegin()

const_iterator carla::Buffer::cbegin ( ) const
inlinenoexcept

在文件 carla/Buffer.h260 行定义.

引用了 _data.

被这些函数引用 begin(), carla::BufferView::begin(), cend() , 以及 carla::BufferView::cend().

+ 这是这个函数的调用关系图:

◆ cbuffer()

boost::asio::const_buffer carla::Buffer::cbuffer ( ) const
inlinenoexcept

从这个缓冲区创建一个boost::asio::buffer。

警告
Boost.Asio缓冲区不拥有数据的所有权。调用者必须确保使用Asio缓冲区时不能删除此缓冲区所持有的内存。

在文件 carla/Buffer.h207 行定义.

引用了 data() , 以及 size().

被这些函数引用 buffer().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ cend()

const_iterator carla::Buffer::cend ( ) const
inlinenoexcept

在文件 carla/Buffer.h275 行定义.

引用了 cbegin() , 以及 size().

被这些函数引用 end() , 以及 carla::BufferView::end().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ clear()

void carla::Buffer::clear ( )
inlinenoexcept

清除此缓冲区的内容,并将其大小和容量设置为零。 删除已分配的内存。

在文件 carla/Buffer.h352 行定义.

引用了 pop().

+ 函数调用图:

◆ copy_from() [1/6]

template<typename T >
void carla::Buffer::copy_from ( const T & source)
inline

source复制到此缓冲区。如果需要,则分配内存。

在文件 carla/Buffer.h367 行定义.

引用了 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().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ copy_from() [2/6]

void carla::Buffer::copy_from ( const value_type * data,
size_type size )
inline

Copy size bytes of the memory pointed by data into this buffer.

Allocates memory if necessary.

在文件 carla/Buffer.h375 行定义.

引用了 copy_from(), data() , 以及 size().

+ 函数调用图:

◆ copy_from() [3/6]

void carla::Buffer::copy_from ( size_type offset,
const Buffer & rhs )
inline

source复制到此缓冲区,在前面留出 offset字节未初始化的空间。 如果需要,则分配内存。

在文件 carla/Buffer.h383 行定义.

引用了 buffer() , 以及 copy_from().

+ 函数调用图:

◆ copy_from() [4/6]

template<typename T >
std::enable_if< boost::asio::is_const_buffer_sequence< T >::value >::type carla::Buffer::copy_from ( size_type offset,
const T & source )
inline

source复制到此缓冲区,在前面留出 offset字节未初始化的空间。 如果需要,则分配内存。

在文件 carla/Buffer.h392 行定义.

引用了 buffer(), DEBUG_ASSERT, DEBUG_ONLY, reset() , 以及 size().

+ 函数调用图:

◆ copy_from() [5/6]

template<typename T >
std::enable_if<!boost::asio::is_const_buffer_sequence< T >::value >::type carla::Buffer::copy_from ( size_type offset,
const T & source )
inline

source复制到此缓冲区,在前面留出 offset字节未初始化的空间。 如果需要,则分配内存。

在文件 carla/Buffer.h408 行定义.

引用了 copy_from().

+ 函数调用图:

◆ copy_from() [6/6]

void carla::Buffer::copy_from ( size_type offset,
const value_type * data,
size_type size )
inline

data指向的内存中的 size字节复制到此缓冲区, 在前面留出 offset字节未初始化的空间。 如果需要,则分配内存。

在文件 carla/Buffer.h430 行定义.

引用了 copy_from(), data() , 以及 size().

+ 函数调用图:

◆ data() [1/2]

const value_type * carla::Buffer::data ( ) const
inlinenoexcept

直接访问分配的内存,如果没有分配内存则返回 nullptr。

在文件 carla/Buffer.h193 行定义.

引用了 _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().

+ 这是这个函数的调用关系图:

◆ data() [2/2]

value_type * carla::Buffer::data ( )
inlinenoexcept

Direct access to the allocated memory or nullptr if no memory is allocated.

在文件 carla/Buffer.h200 行定义.

引用了 _data.

◆ empty()

bool carla::Buffer::empty ( ) const
inlinenoexcept

在文件 carla/Buffer.h232 行定义.

引用了 _size.

◆ end() [1/2]

const_iterator carla::Buffer::end ( ) const
inlinenoexcept

在文件 carla/Buffer.h280 行定义.

引用了 cend().

被这些函数引用 carla::sensor::RawData::end(), carla::sensor::RawData::end() , 以及 carla::operator==().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ end() [2/2]

iterator carla::Buffer::end ( )
inlinenoexcept

在文件 carla/Buffer.h285 行定义.

引用了 begin() , 以及 size().

+ 函数调用图:

◆ max_size()

static constexpr size_type carla::Buffer::max_size ( )
inlinestaticconstexprnoexcept

在文件 carla/Buffer.h242 行定义.

被这些函数引用 Buffer(), Buffer() , 以及 reset().

+ 这是这个函数的调用关系图:

◆ operator=() [1/2]

Buffer & carla::Buffer::operator= ( Buffer && rhs)
inlinenoexcept

在文件 carla/Buffer.h159 行定义.

引用了 _capacity, _data, _parent_pool , 以及 _size.

◆ operator=() [2/2]

Buffer & carla::Buffer::operator= ( const Buffer & )
delete

◆ operator[]() [1/2]

value_type & carla::Buffer::operator[] ( size_t i)
inline

Access the byte at position i.

在文件 carla/Buffer.h187 行定义.

引用了 _data.

◆ operator[]() [2/2]

const value_type & carla::Buffer::operator[] ( size_t i) const
inline

访问位置 i处的字节

在文件 carla/Buffer.h181 行定义.

引用了 _data.

◆ pop()

std::unique_ptr< value_type[]> carla::Buffer::pop ( )
inlinenoexcept

释放此缓冲区的内容,并将其大小和容量设置为零。

在文件 carla/Buffer.h342 行定义.

引用了 _capacity, _data , 以及 _size.

被这些函数引用 clear().

+ 这是这个函数的调用关系图:

◆ reset() [1/2]

void carla::Buffer::reset ( size_type size)
inline

重置缓冲区的大小。如果容量不足,当前内存将被丢弃,并分配一个新的大小为 size的内存块。 allocated.

在文件 carla/Buffer.h300 行定义.

引用了 _capacity, _data, _size, carla::log_debug() , 以及 size().

被这些函数引用 carla::multigpu::IncomingMessage::buffer(), carla::streaming::detail::tcp::IncomingMessage::buffer(), copy_from(), reset(), resize() , 以及 TEST().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ reset() [2/2]

void carla::Buffer::reset ( uint64_t size)
inline

重置缓冲区的大小。如果容量不足,当前内存将被丢弃,并分配一个新的大小为 size的内存块。 allocated.

在文件 carla/Buffer.h314 行定义.

引用了 max_size(), reset(), size() , 以及 carla::throw_exception().

+ 函数调用图:

◆ resize()

void carla::Buffer::resize ( uint64_t size)
inline

调整缓冲区的大小。如果容量不足,将分配一个新的大小为 size的内存块,并复制数据。

在文件 carla/Buffer.h325 行定义.

引用了 _capacity, _data, _size, copy_from(), data(), reset() , 以及 size().

+ 函数调用图:

◆ ReuseThisBuffer()

void carla::Buffer::ReuseThisBuffer ( )
private

在文件 carla/Buffer.cpp7 行定义.

引用了 _parent_pool.

被这些函数引用 ~Buffer().

+ 这是这个函数的调用关系图:

◆ size()

size_type carla::Buffer::size ( ) const
inlinenoexcept

友元及相关函数文档

◆ BufferPool

friend class BufferPool
friend

在文件 carla/Buffer.h444 行定义.

◆ BufferView

friend class BufferView
friend

在文件 carla/Buffer.h447 行定义.

类成员变量说明

◆ _capacity

size_type carla::Buffer::_capacity = 0u
private

在文件 carla/Buffer.h457 行定义.

被这些函数引用 capacity(), operator=(), pop(), reset(), resize() , 以及 ~Buffer().

◆ _data

std::unique_ptr<value_type[]> carla::Buffer::_data = nullptr
private

在文件 carla/Buffer.h460 行定义.

被这些函数引用 begin(), cbegin(), data(), data(), operator=(), operator[](), operator[](), pop(), reset() , 以及 resize().

◆ _parent_pool

std::weak_ptr<BufferPool> carla::Buffer::_parent_pool
private

在文件 carla/Buffer.h450 行定义.

被这些函数引用 operator=(), carla::BufferPool::Pop() , 以及 ReuseThisBuffer().

◆ _size

size_type carla::Buffer::_size = 0u
private

在文件 carla/Buffer.h454 行定义.

被这些函数引用 empty(), operator=(), pop(), reset(), resize() , 以及 size().


该类的文档由以下文件生成: