g2o
Loading...
Searching...
No Matches
g2o
core
dynamic_aligned_buffer.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include <cstddef>
4
5
#include "Eigen/Core"
6
7
namespace
g2o
{
8
// 16 byte aligned allocation functions
9
template
<
typename
Type>
10
Type*
allocate_aligned
(
size_t
n) {
11
return
(Type*)Eigen::internal::aligned_malloc(n *
sizeof
(Type));
12
}
13
14
template
<
typename
Type>
15
Type*
reallocate_aligned
(Type* ptr,
size_t
newSize,
size_t
oldSize) {
16
return
(Type*)Eigen::internal::aligned_realloc(ptr, newSize *
sizeof
(Type),
17
oldSize *
sizeof
(Type));
18
}
19
20
template
<
typename
Type>
21
void
free_aligned
(Type* block) {
22
Eigen::internal::aligned_free(block);
23
}
24
25
template
<
typename
Type>
26
struct
dynamic_aligned_buffer
{
27
explicit
dynamic_aligned_buffer
(
size_t
size) :
m_size
{0},
m_ptr
{nullptr} {
28
allocate
(size);
29
}
30
31
~dynamic_aligned_buffer
() {
free
(); }
32
33
Type*
request
(
size_t
n) {
34
if
(n <=
m_size
)
return
m_ptr
;
35
36
m_ptr
= reallocate_aligned<Type>(
m_ptr
, n,
m_size
);
37
m_size
=
m_ptr
? n : 0;
38
39
return
m_ptr
;
40
}
41
42
private
:
43
void
allocate
(
size_t
size) {
44
m_ptr
= allocate_aligned<Type>(size);
45
if
(
m_ptr
!=
nullptr
)
m_size
= size;
46
}
47
48
void
free
() {
49
if
(
m_ptr
!=
nullptr
) {
50
free_aligned<Type>(
m_ptr
);
51
m_size
= 0;
52
m_ptr
=
nullptr
;
53
}
54
}
55
56
std::size_t
m_size
;
57
Type*
m_ptr
;
58
};
59
60
template
<
typename
T>
61
struct
aligned_deleter
{
62
void
operator()
(T* block) {
free_aligned
(block); }
63
};
64
}
// namespace g2o
g2o
Definition
dl_wrapper.cpp:55
g2o::allocate_aligned
Type * allocate_aligned(size_t n)
Definition
dynamic_aligned_buffer.hpp:10
g2o::reallocate_aligned
Type * reallocate_aligned(Type *ptr, size_t newSize, size_t oldSize)
Definition
dynamic_aligned_buffer.hpp:15
g2o::free_aligned
void free_aligned(Type *block)
Definition
dynamic_aligned_buffer.hpp:21
g2o::aligned_deleter
Definition
dynamic_aligned_buffer.hpp:61
g2o::aligned_deleter::operator()
void operator()(T *block)
Definition
dynamic_aligned_buffer.hpp:62
g2o::dynamic_aligned_buffer
Definition
dynamic_aligned_buffer.hpp:26
g2o::dynamic_aligned_buffer::m_size
std::size_t m_size
Definition
dynamic_aligned_buffer.hpp:56
g2o::dynamic_aligned_buffer::request
Type * request(size_t n)
Definition
dynamic_aligned_buffer.hpp:33
g2o::dynamic_aligned_buffer::dynamic_aligned_buffer
dynamic_aligned_buffer(size_t size)
Definition
dynamic_aligned_buffer.hpp:27
g2o::dynamic_aligned_buffer::allocate
void allocate(size_t size)
Definition
dynamic_aligned_buffer.hpp:43
g2o::dynamic_aligned_buffer::m_ptr
Type * m_ptr
Definition
dynamic_aligned_buffer.hpp:57
g2o::dynamic_aligned_buffer::~dynamic_aligned_buffer
~dynamic_aligned_buffer()
Definition
dynamic_aligned_buffer.hpp:31
g2o::dynamic_aligned_buffer::free
void free()
Definition
dynamic_aligned_buffer.hpp:48
Generated on Tue Nov 11 2025 05:18:45 for g2o by
1.9.8