Apollo 10.0
自动驾驶开放平台
apollo::perception::base::LightObjectPool< ObjectType, N, Initializer, sensor_type > 模板类 参考

#include <light_object_pool.h>

类 apollo::perception::base::LightObjectPool< ObjectType, N, Initializer, sensor_type > 继承关系图:
apollo::perception::base::LightObjectPool< ObjectType, N, Initializer, sensor_type > 的协作图:

Public 成员函数

std::shared_ptr< ObjectTypeGet () override
 
void BatchGet (size_t num, std::vector< std::shared_ptr< ObjectType > > *data) override
 
void BatchGet (size_t num, bool is_front, std::list< std::shared_ptr< ObjectType > > *data) override
 
void BatchGet (size_t num, bool is_front, std::deque< std::shared_ptr< ObjectType > > *data) override
 
void set_capacity (size_t capacity) override
 
size_t RemainedNum () override
 
 ~LightObjectPool () override
 
- Public 成员函数 继承自 apollo::perception::base::BaseObjectPool< ObjectType >
 BaseObjectPool ()=default
 
virtual ~BaseObjectPool ()=default
 
size_t get_capacity ()
 

静态 Public 成员函数

static LightObjectPoolInstance (const std::string &sensor_name="velodyne64")
 

Protected 成员函数

void Add (size_t num)
 
 LightObjectPool (const size_t default_size)
 
- Protected 成员函数 继承自 apollo::perception::base::BaseObjectPool< ObjectType >
 BaseObjectPool (const BaseObjectPool &rhs)=delete
 
BaseObjectPooloperator= (const BaseObjectPool &rhs)=delete
 

Protected 属性

std::queue< ObjectType * > queue_
 
ObjectTypecache_ = nullptr
 
const size_t kDefaultCacheSize
 
std::list< ObjectType * > extended_cache_
 
Initializer kInitializer
 
- Protected 属性 继承自 apollo::perception::base::BaseObjectPool< ObjectType >
size_t capacity_ = 0
 

详细描述

template<class ObjectType, size_t N = kPoolDefaultSize, class Initializer = ObjectPoolDefaultInitializer<ObjectType>, SensorType sensor_type = SensorType::UNKNOWN_SENSOR_TYPE>
class apollo::perception::base::LightObjectPool< ObjectType, N, Initializer, sensor_type >

在文件 light_object_pool.h39 行定义.

构造及析构函数说明

◆ ~LightObjectPool()

template<class ObjectType , size_t N = kPoolDefaultSize, class Initializer = ObjectPoolDefaultInitializer<ObjectType>, SensorType sensor_type = SensorType::UNKNOWN_SENSOR_TYPE>
apollo::perception::base::LightObjectPool< ObjectType, N, Initializer, sensor_type >::~LightObjectPool ( )
inlineoverride

在文件 light_object_pool.h146 行定义.

146 {
147 if (cache_) {
148 delete[] cache_;
149 cache_ = nullptr;
150 }
151 for (auto& ptr : extended_cache_) {
152 delete ptr;
153 }
154 extended_cache_.clear();
155 }

◆ LightObjectPool()

template<class ObjectType , size_t N = kPoolDefaultSize, class Initializer = ObjectPoolDefaultInitializer<ObjectType>, SensorType sensor_type = SensorType::UNKNOWN_SENSOR_TYPE>
apollo::perception::base::LightObjectPool< ObjectType, N, Initializer, sensor_type >::LightObjectPool ( const size_t  default_size)
inlineexplicitprotected

在文件 light_object_pool.h169 行定义.

成员函数说明

◆ Add()

template<class ObjectType , size_t N = kPoolDefaultSize, class Initializer = ObjectPoolDefaultInitializer<ObjectType>, SensorType sensor_type = SensorType::UNKNOWN_SENSOR_TYPE>
void apollo::perception::base::LightObjectPool< ObjectType, N, Initializer, sensor_type >::Add ( size_t  num)
inlineprotected

在文件 light_object_pool.h159 行定义.

159 {
160 for (size_t i = 0; i < num; ++i) {
161 ObjectType* ptr = new ObjectType;
162 extended_cache_.push_back(ptr);
163 queue_.push(ptr);
164 }
166 }

◆ BatchGet() [1/3]

template<class ObjectType , size_t N = kPoolDefaultSize, class Initializer = ObjectPoolDefaultInitializer<ObjectType>, SensorType sensor_type = SensorType::UNKNOWN_SENSOR_TYPE>
void apollo::perception::base::LightObjectPool< ObjectType, N, Initializer, sensor_type >::BatchGet ( size_t  num,
bool  is_front,
std::deque< std::shared_ptr< ObjectType > > *  data 
)
inlineoverridevirtual

实现了 apollo::perception::base::BaseObjectPool< ObjectType >.

在文件 light_object_pool.h116 行定义.

117 {
118 std::vector<ObjectType*> buffer(num, nullptr);
119 if (queue_.size() < num) {
120 Add(num - queue_.size() + kPoolDefaultExtendNum);
121 }
122 for (size_t i = 0; i < num; ++i) {
123 buffer[i] = queue_.front();
124 queue_.pop();
125 }
126 for (size_t i = 0; i < num; ++i) {
127 kInitializer(buffer[i]);
128 is_front
129 ? data->emplace_front(std::shared_ptr<ObjectType>(
130 buffer[i], [&](ObjectType* obj_ptr) { queue_.push(obj_ptr); }))
131 : data->emplace_back(std::shared_ptr<ObjectType>(
132 buffer[i], [&](ObjectType* obj_ptr) { queue_.push(obj_ptr); }));
133 }
134 }

◆ BatchGet() [2/3]

template<class ObjectType , size_t N = kPoolDefaultSize, class Initializer = ObjectPoolDefaultInitializer<ObjectType>, SensorType sensor_type = SensorType::UNKNOWN_SENSOR_TYPE>
void apollo::perception::base::LightObjectPool< ObjectType, N, Initializer, sensor_type >::BatchGet ( size_t  num,
bool  is_front,
std::list< std::shared_ptr< ObjectType > > *  data 
)
inlineoverridevirtual

实现了 apollo::perception::base::BaseObjectPool< ObjectType >.

在文件 light_object_pool.h92 行定义.

93 {
94 std::vector<ObjectType*> buffer(num, nullptr);
95 if (queue_.size() < num) {
96 Add(num - queue_.size() + kPoolDefaultExtendNum);
97 }
98 for (size_t i = 0; i < num; ++i) {
99 buffer[i] = queue_.front();
100 queue_.pop();
101 }
102 for (size_t i = 0; i < num; ++i) {
103 kInitializer(buffer[i]);
104 is_front
105 ? data->emplace_front(std::shared_ptr<ObjectType>(
106 buffer[i], [&](ObjectType* obj_ptr) { queue_.push(obj_ptr); }))
107 : data->emplace_back(std::shared_ptr<ObjectType>(
108 buffer[i], [&](ObjectType* obj_ptr) { queue_.push(obj_ptr); }));
109 }
110 }

◆ BatchGet() [3/3]

template<class ObjectType , size_t N = kPoolDefaultSize, class Initializer = ObjectPoolDefaultInitializer<ObjectType>, SensorType sensor_type = SensorType::UNKNOWN_SENSOR_TYPE>
void apollo::perception::base::LightObjectPool< ObjectType, N, Initializer, sensor_type >::BatchGet ( size_t  num,
std::vector< std::shared_ptr< ObjectType > > *  data 
)
inlineoverridevirtual

实现了 apollo::perception::base::BaseObjectPool< ObjectType >.

在文件 light_object_pool.h73 行定义.

74 {
75 if (queue_.size() < num) {
76 Add(num - queue_.size() + kPoolDefaultExtendNum);
77 }
78 ObjectType* ptr = nullptr;
79 for (size_t i = 0; i < num; ++i) {
80 ptr = queue_.front();
81 queue_.pop();
82 kInitializer(ptr);
83 data->emplace_back(std::shared_ptr<ObjectType>(
84 ptr, [&](ObjectType* obj_ptr) { queue_.push(obj_ptr); }));
85 }
86 }

◆ Get()

template<class ObjectType , size_t N = kPoolDefaultSize, class Initializer = ObjectPoolDefaultInitializer<ObjectType>, SensorType sensor_type = SensorType::UNKNOWN_SENSOR_TYPE>
std::shared_ptr< ObjectType > apollo::perception::base::LightObjectPool< ObjectType, N, Initializer, sensor_type >::Get ( )
inlineoverridevirtual

实现了 apollo::perception::base::BaseObjectPool< ObjectType >.

在文件 light_object_pool.h58 行定义.

58 {
59 ObjectType* ptr = nullptr;
60 if (queue_.empty()) {
61 Add(1 + kPoolDefaultExtendNum);
62 }
63 ptr = queue_.front();
64 queue_.pop();
65 kInitializer(ptr);
66 return std::shared_ptr<ObjectType>(
67 ptr, [&](ObjectType* obj_ptr) { queue_.push(obj_ptr); });
68 }

◆ Instance()

template<class ObjectType , size_t N = kPoolDefaultSize, class Initializer = ObjectPoolDefaultInitializer<ObjectType>, SensorType sensor_type = SensorType::UNKNOWN_SENSOR_TYPE>
static LightObjectPool & apollo::perception::base::LightObjectPool< ObjectType, N, Initializer, sensor_type >::Instance ( const std::string &  sensor_name = "velodyne64")
inlinestatic

在文件 light_object_pool.h44 行定义.

45 {
46 typedef std::shared_ptr<LightObjectPool> LightObjectPoolPtr;
47 static std::map<std::string, LightObjectPoolPtr> object_pool;
48 auto itr = object_pool.find(sensor_name);
49 if (itr == object_pool.end()) {
50 auto ret = object_pool.insert(std::pair<std::string, LightObjectPoolPtr>(
51 sensor_name, LightObjectPoolPtr(new LightObjectPool(N))));
52 return *(ret.first->second);
53 }
54 return *(itr->second);
55 }

◆ RemainedNum()

template<class ObjectType , size_t N = kPoolDefaultSize, class Initializer = ObjectPoolDefaultInitializer<ObjectType>, SensorType sensor_type = SensorType::UNKNOWN_SENSOR_TYPE>
size_t apollo::perception::base::LightObjectPool< ObjectType, N, Initializer, sensor_type >::RemainedNum ( )
inlineoverridevirtual

重载 apollo::perception::base::BaseObjectPool< ObjectType > .

在文件 light_object_pool.h144 行定义.

144{ return queue_.size(); }

◆ set_capacity()

template<class ObjectType , size_t N = kPoolDefaultSize, class Initializer = ObjectPoolDefaultInitializer<ObjectType>, SensorType sensor_type = SensorType::UNKNOWN_SENSOR_TYPE>
void apollo::perception::base::LightObjectPool< ObjectType, N, Initializer, sensor_type >::set_capacity ( size_t  capacity)
inlineoverridevirtual

重载 apollo::perception::base::BaseObjectPool< ObjectType > .

在文件 light_object_pool.h137 行定义.

137 {
138 if (capacity_ < capacity) {
139 Add(capacity - capacity_);
140 }
141 }

类成员变量说明

◆ cache_

template<class ObjectType , size_t N = kPoolDefaultSize, class Initializer = ObjectPoolDefaultInitializer<ObjectType>, SensorType sensor_type = SensorType::UNKNOWN_SENSOR_TYPE>
ObjectType* apollo::perception::base::LightObjectPool< ObjectType, N, Initializer, sensor_type >::cache_ = nullptr
protected

在文件 light_object_pool.h180 行定义.

◆ extended_cache_

template<class ObjectType , size_t N = kPoolDefaultSize, class Initializer = ObjectPoolDefaultInitializer<ObjectType>, SensorType sensor_type = SensorType::UNKNOWN_SENSOR_TYPE>
std::list<ObjectType*> apollo::perception::base::LightObjectPool< ObjectType, N, Initializer, sensor_type >::extended_cache_
protected

在文件 light_object_pool.h183 行定义.

◆ kDefaultCacheSize

template<class ObjectType , size_t N = kPoolDefaultSize, class Initializer = ObjectPoolDefaultInitializer<ObjectType>, SensorType sensor_type = SensorType::UNKNOWN_SENSOR_TYPE>
const size_t apollo::perception::base::LightObjectPool< ObjectType, N, Initializer, sensor_type >::kDefaultCacheSize
protected

在文件 light_object_pool.h181 行定义.

◆ kInitializer

template<class ObjectType , size_t N = kPoolDefaultSize, class Initializer = ObjectPoolDefaultInitializer<ObjectType>, SensorType sensor_type = SensorType::UNKNOWN_SENSOR_TYPE>
Initializer apollo::perception::base::LightObjectPool< ObjectType, N, Initializer, sensor_type >::kInitializer
protected

在文件 light_object_pool.h185 行定义.

◆ queue_

template<class ObjectType , size_t N = kPoolDefaultSize, class Initializer = ObjectPoolDefaultInitializer<ObjectType>, SensorType sensor_type = SensorType::UNKNOWN_SENSOR_TYPE>
std::queue<ObjectType*> apollo::perception::base::LightObjectPool< ObjectType, N, Initializer, sensor_type >::queue_
protected

在文件 light_object_pool.h178 行定义.


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