23 namespace localization {
25 namespace pyramid_map {
27 template <
typename Scalar,
int aligned_len = alignof(max_align_t)>
34 void Init(
int rows,
int cols);
40 void SetData(
const Scalar* data,
unsigned int data_size,
41 unsigned int start_id);
56 void* raw_ptr_ =
nullptr;
60 template <
typename Scalar,
int aligned_len>
69 template <
typename Scalar,
int aligned_len>
75 raw_size_ = matrix.raw_size_;
76 raw_ptr_ = malloc(raw_size_);
78 row_data_ =
reinterpret_cast<Scalar**
>(malloc(
sizeof(Scalar*) *
rows_));
80 unsigned char* ptr =
reinterpret_cast<unsigned char*
>(raw_ptr_);
82 while (idx < aligned_len) {
83 if ((uint64_t)(ptr) % aligned_len == 0) {
89 data_ =
reinterpret_cast<Scalar*
>(ptr);
91 for (
int k = 0; k <
rows_; k++) {
98 template <
typename Scalar,
int aligned_len>
115 template <
typename Scalar,
int aligned_len>
131 raw_size_ =
static_cast<int>(
sizeof(Scalar)) * (rows * cols) + aligned_len;
132 raw_ptr_ = malloc(raw_size_);
134 row_data_ =
reinterpret_cast<Scalar**
>(malloc(
sizeof(Scalar*) *
rows_));
136 unsigned char* ptr =
reinterpret_cast<unsigned char*
>(raw_ptr_);
138 while (idx < aligned_len) {
139 if ((uint64_t)(ptr) % aligned_len == 0) {
145 data_ =
reinterpret_cast<Scalar*
>(ptr);
147 for (
int k = 0; k <
rows_; k++) {
156 template <
typename Scalar,
int aligned_len>
161 template <
typename Scalar,
int aligned_len>
163 memset(
data_ + start_id, 0,
sizeof(Scalar) * (end_id - start_id + 1));
166 template <
typename Scalar,
int aligned_len>
171 template <
typename Scalar,
int aligned_len>
176 template <
typename Scalar,
int aligned_len>
181 template <
typename Scalar,
int aligned_len>
183 unsigned int data_size,
184 unsigned int start_id) {
185 memcpy(
data_ + start_id, data,
sizeof(Scalar) * data_size);
188 template <
typename Scalar,
int aligned_len>
205 raw_size_ = matrix.raw_size_;
206 raw_ptr_ = malloc(raw_size_);
208 row_data_ =
reinterpret_cast<Scalar**
>(malloc(
sizeof(Scalar*) *
rows_));
210 unsigned char* ptr =
reinterpret_cast<unsigned char*
>(raw_ptr_);
212 while (idx < aligned_len) {
213 if ((uint64_t)(ptr) % aligned_len == 0) {
219 data_ =
reinterpret_cast<Scalar*
>(ptr);
221 for (
int k = 0; k <
rows_; k++) {
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
AlignedMatrix()
Definition: aligned_matrix.h:61
const Scalar * operator[](int row) const
Definition: aligned_matrix.h:47
AlignedMatrix & operator=(const AlignedMatrix< Scalar, aligned_len > &matrix)
Definition: aligned_matrix.h:190
Definition: aligned_matrix.h:28
void MakeEmpty()
Definition: aligned_matrix.h:157
int GetRow() const
Definition: aligned_matrix.h:167
int rows_
Definition: aligned_matrix.h:52
int cols_
Definition: aligned_matrix.h:53
~AlignedMatrix()
Definition: aligned_matrix.h:99
void Init(int rows, int cols)
Definition: aligned_matrix.h:116
int GetCol() const
Definition: aligned_matrix.h:172
Scalar * operator[](int row)
Definition: aligned_matrix.h:45
Scalar ** row_data_
Definition: aligned_matrix.h:51
void SetData(const Scalar *data, unsigned int data_size, unsigned int start_id)
Definition: aligned_matrix.h:182
Scalar * data_
Definition: aligned_matrix.h:50
Scalar * GetData()
Definition: aligned_matrix.h:177