UFO 1.0.0
An Efficient Probabilistic 3D Mapping Framework That Embraces the Unknown
Loading...
Searching...
No Matches
leaf_block.hpp
1
42#ifndef UFO_CONTAINER_TREE_LEAF_BLOCK_HPP
43#define UFO_CONTAINER_TREE_LEAF_BLOCK_HPP
44
45// UFO
46#include <ufo/container/tree/index.hpp>
47
48// STL
49#include <atomic>
50#include <cstddef>
51#include <cstdint>
52#include <type_traits>
53
54namespace ufo
55{
56template <std::size_t Dim, std::size_t BF>
58 using modified_type = std::uint16_t;
59
60 static_assert(sizeof(std::atomic<modified_type>) == sizeof(modified_type));
61
62 TreeIndex::pos_type parent_block;
63 std::uint8_t parent_offset;
64
65 // Bit saying if the node corresponding to the bit has been modified
66 alignas(std::atomic_ref<modified_type>::required_alignment) modified_type modified;
67};
68
69static_assert(8 == sizeof(TreeLeafBlock<2, 4>));
70static_assert(8 == sizeof(TreeLeafBlock<3, 8>));
71static_assert(8 == sizeof(TreeLeafBlock<4, 16>));
72
73static_assert(std::is_standard_layout_v<TreeLeafBlock<2, 4>>);
74static_assert(std::is_standard_layout_v<TreeLeafBlock<3, 8>>);
75static_assert(std::is_standard_layout_v<TreeLeafBlock<4, 16>>);
76} // namespace ufo
77
78#endif // UFO_CONTAINER_TREE_LEAF_BLOCK_HPP
All vision-related classes and functions.
Definition cloud.hpp:49