Apollo 10.0
自动驾驶开放平台
apollo::localization::msf::pyramid_map::AlignedMatrix< Scalar, aligned_len > 模板类 参考

#include <aligned_matrix.h>

apollo::localization::msf::pyramid_map::AlignedMatrix< Scalar, aligned_len > 的协作图:

Public 成员函数

 AlignedMatrix ()
 
 AlignedMatrix (const AlignedMatrix< Scalar, aligned_len > &matrix)
 
 ~AlignedMatrix ()
 
void Init (int rows, int cols)
 
void MakeEmpty ()
 
void MakeEmpty (int start_id, int end_id)
 
int GetRow () const
 
int GetCol () const
 
Scalar * GetData ()
 
void SetData (const Scalar *data, unsigned int data_size, unsigned int start_id)
 
AlignedMatrixoperator= (const AlignedMatrix< Scalar, aligned_len > &matrix)
 
Scalar * operator[] (int row)
 
const Scalar * operator[] (int row) const
 

Protected 属性

Scalar * data_ = nullptr
 
Scalar ** row_data_ = nullptr
 
int rows_ = 0
 
int cols_ = 0
 

详细描述

template<typename Scalar, int aligned_len = alignof(max_align_t)>
class apollo::localization::msf::pyramid_map::AlignedMatrix< Scalar, aligned_len >

在文件 aligned_matrix.h28 行定义.

构造及析构函数说明

◆ AlignedMatrix() [1/2]

template<typename Scalar , int aligned_len>
apollo::localization::msf::pyramid_map::AlignedMatrix< Scalar, aligned_len >::AlignedMatrix ( )

◆ AlignedMatrix() [2/2]

template<typename Scalar , int aligned_len>
apollo::localization::msf::pyramid_map::AlignedMatrix< Scalar, aligned_len >::AlignedMatrix ( const AlignedMatrix< Scalar, aligned_len > &  matrix)
explicit

在文件 aligned_matrix.h70 行定义.

71 {
72 rows_ = matrix.rows_;
73 cols_ = matrix.cols_;
74
75 raw_size_ = matrix.raw_size_;
76 raw_ptr_ = malloc(raw_size_);
77
78 row_data_ = reinterpret_cast<Scalar**>(malloc(sizeof(Scalar*) * rows_));
79
80 unsigned char* ptr = reinterpret_cast<unsigned char*>(raw_ptr_);
81 int idx = 0;
82 while (idx < aligned_len) {
83 if ((uint64_t)(ptr) % aligned_len == 0) {
84 break;
85 }
86 ++ptr;
87 ++idx;
88 }
89 data_ = reinterpret_cast<Scalar*>(ptr);
90
91 for (int k = 0; k < rows_; k++) {
92 row_data_[k] = data_ + k * cols_;
93 }
94
95 memcpy(data_, matrix.data_, sizeof(Scalar) * rows_ * cols_);
96}

◆ ~AlignedMatrix()

template<typename Scalar , int aligned_len>
apollo::localization::msf::pyramid_map::AlignedMatrix< Scalar, aligned_len >::~AlignedMatrix ( )

在文件 aligned_matrix.h99 行定义.

99 {
100 if (raw_ptr_) {
101 free(raw_ptr_);
102 raw_size_ = 0;
103 raw_ptr_ = nullptr;
104 }
105
106 if (row_data_) {
107 free(row_data_);
108 row_data_ = nullptr;
109 }
110
111 data_ = nullptr;
112 raw_size_ = 0;
113}

成员函数说明

◆ GetCol()

template<typename Scalar , int aligned_len>
int apollo::localization::msf::pyramid_map::AlignedMatrix< Scalar, aligned_len >::GetCol ( ) const

在文件 aligned_matrix.h172 行定义.

172 {
173 return cols_;
174}

◆ GetData()

template<typename Scalar , int aligned_len>
Scalar * apollo::localization::msf::pyramid_map::AlignedMatrix< Scalar, aligned_len >::GetData ( )

在文件 aligned_matrix.h177 行定义.

177 {
178 return data_;
179}

◆ GetRow()

template<typename Scalar , int aligned_len>
int apollo::localization::msf::pyramid_map::AlignedMatrix< Scalar, aligned_len >::GetRow ( ) const

在文件 aligned_matrix.h167 行定义.

167 {
168 return rows_;
169}

◆ Init()

template<typename Scalar , int aligned_len>
void apollo::localization::msf::pyramid_map::AlignedMatrix< Scalar, aligned_len >::Init ( int  rows,
int  cols 
)

在文件 aligned_matrix.h116 行定义.

116 {
117 if (raw_ptr_) {
118 free(raw_ptr_);
119 raw_size_ = 0;
120 raw_ptr_ = nullptr;
121 }
122
123 if (row_data_) {
124 free(row_data_);
125 row_data_ = nullptr;
126 }
127
128 rows_ = rows;
129 cols_ = cols;
130
131 raw_size_ = static_cast<int>(sizeof(Scalar)) * (rows * cols) + aligned_len;
132 raw_ptr_ = malloc(raw_size_);
133
134 row_data_ = reinterpret_cast<Scalar**>(malloc(sizeof(Scalar*) * rows_));
135
136 unsigned char* ptr = reinterpret_cast<unsigned char*>(raw_ptr_);
137 int idx = 0;
138 while (idx < aligned_len) {
139 if ((uint64_t)(ptr) % aligned_len == 0) {
140 break;
141 }
142 ++ptr;
143 ++idx;
144 }
145 data_ = reinterpret_cast<Scalar*>(ptr);
146
147 for (int k = 0; k < rows_; k++) {
148 row_data_[k] = data_ + k * cols_;
149 }
150
151 MakeEmpty();
152
153 // printf("aligned addr: %p\n", (void*)data_);
154}

◆ MakeEmpty() [1/2]

template<typename Scalar , int aligned_len>
void apollo::localization::msf::pyramid_map::AlignedMatrix< Scalar, aligned_len >::MakeEmpty ( )

在文件 aligned_matrix.h157 行定义.

157 {
158 memset(data_, 0, sizeof(Scalar) * rows_ * cols_);
159}

◆ MakeEmpty() [2/2]

template<typename Scalar , int aligned_len>
void apollo::localization::msf::pyramid_map::AlignedMatrix< Scalar, aligned_len >::MakeEmpty ( int  start_id,
int  end_id 
)

在文件 aligned_matrix.h162 行定义.

162 {
163 memset(data_ + start_id, 0, sizeof(Scalar) * (end_id - start_id + 1));
164}

◆ operator=()

template<typename Scalar , int aligned_len>
AlignedMatrix< Scalar, aligned_len > & apollo::localization::msf::pyramid_map::AlignedMatrix< Scalar, aligned_len >::operator= ( const AlignedMatrix< Scalar, aligned_len > &  matrix)

在文件 aligned_matrix.h189 行定义.

190 {
191 if (raw_ptr_) {
192 free(raw_ptr_);
193 raw_size_ = 0;
194 raw_ptr_ = nullptr;
195 }
196
197 if (row_data_) {
198 free(row_data_);
199 row_data_ = nullptr;
200 }
201
202 rows_ = matrix.rows_;
203 cols_ = matrix.cols_;
204
205 raw_size_ = matrix.raw_size_;
206 raw_ptr_ = malloc(raw_size_);
207
208 row_data_ = reinterpret_cast<Scalar**>(malloc(sizeof(Scalar*) * rows_));
209
210 unsigned char* ptr = reinterpret_cast<unsigned char*>(raw_ptr_);
211 int idx = 0;
212 while (idx < aligned_len) {
213 if ((uint64_t)(ptr) % aligned_len == 0) {
214 break;
215 }
216 ++ptr;
217 ++idx;
218 }
219 data_ = reinterpret_cast<Scalar*>(ptr);
220
221 for (int k = 0; k < rows_; k++) {
222 row_data_[k] = data_ + k * cols_;
223 }
224
225 memcpy(data_, matrix.data_, sizeof(Scalar) * rows_ * cols_);
226 return *this;
227}

◆ operator[]() [1/2]

template<typename Scalar , int aligned_len = alignof(max_align_t)>
Scalar * apollo::localization::msf::pyramid_map::AlignedMatrix< Scalar, aligned_len >::operator[] ( int  row)
inline

在文件 aligned_matrix.h45 行定义.

45{ return row_data_[row]; }

◆ operator[]() [2/2]

template<typename Scalar , int aligned_len = alignof(max_align_t)>
const Scalar * apollo::localization::msf::pyramid_map::AlignedMatrix< Scalar, aligned_len >::operator[] ( int  row) const
inline

在文件 aligned_matrix.h47 行定义.

47{ return row_data_[row]; }

◆ SetData()

template<typename Scalar , int aligned_len>
void apollo::localization::msf::pyramid_map::AlignedMatrix< Scalar, aligned_len >::SetData ( const Scalar *  data,
unsigned int  data_size,
unsigned int  start_id 
)

在文件 aligned_matrix.h182 行定义.

184 {
185 memcpy(data_ + start_id, data, sizeof(Scalar) * data_size);
186}

类成员变量说明

◆ cols_

template<typename Scalar , int aligned_len = alignof(max_align_t)>
int apollo::localization::msf::pyramid_map::AlignedMatrix< Scalar, aligned_len >::cols_ = 0
protected

在文件 aligned_matrix.h53 行定义.

◆ data_

template<typename Scalar , int aligned_len = alignof(max_align_t)>
Scalar* apollo::localization::msf::pyramid_map::AlignedMatrix< Scalar, aligned_len >::data_ = nullptr
protected

在文件 aligned_matrix.h50 行定义.

◆ row_data_

template<typename Scalar , int aligned_len = alignof(max_align_t)>
Scalar** apollo::localization::msf::pyramid_map::AlignedMatrix< Scalar, aligned_len >::row_data_ = nullptr
protected

在文件 aligned_matrix.h51 行定义.

◆ rows_

template<typename Scalar , int aligned_len = alignof(max_align_t)>
int apollo::localization::msf::pyramid_map::AlignedMatrix< Scalar, aligned_len >::rows_ = 0
protected

在文件 aligned_matrix.h52 行定义.


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