UFO 1.0.0
An Efficient Probabilistic 3D Mapping Framework That Embraces the Unknown
Loading...
Searching...
No Matches
block.hpp
1
41#ifndef UFO_MAP_LABELS_BLOCK_HPP
42#define UFO_MAP_LABELS_BLOCK_HPP
43
44// UFO
45#include <ufo/core/label.hpp>
46#include <ufo/utility/create_array.hpp>
47
48// STL
49#include <array>
50#include <cassert>
51#include <cstddef>
52#include <set>
53
54namespace ufo
55{
57 using labels_t = std::set<label_t>;
58
59 labels_t labels{};
60
61 LabelsElement() noexcept = default;
62 LabelsElement(LabelsElement const&) noexcept = default;
63
64 LabelsElement(labels_t labels) noexcept : labels(labels) {}
65
66 LabelsElement& operator=(LabelsElement const&) noexcept = default;
67};
68
69template <std::size_t BF>
71 using labels_t = LabelsElement::labels_t;
72
73 std::array<LabelsElement, BF> data;
74
75 constexpr LabelsBlock() = default;
76
77 constexpr LabelsBlock(float labels) : data(createArray<BF>(LabelsElement(labels))) {}
78
79 constexpr LabelsBlock(LabelsElement const& parent) : data(createArray<BF>(parent)) {}
80
81 constexpr void fill(LabelsElement const& parent) { data.fill(parent); }
82
83 [[nodiscard]] constexpr LabelsElement& operator[](std::size_t pos)
84 {
85 assert(BF > pos);
86 return data[pos];
87 }
88
89 [[nodiscard]] constexpr LabelsElement const& operator[](std::size_t pos) const
90 {
91 assert(BF > pos);
92 return data[pos];
93 }
94};
95} // namespace ufo
96#endif // UFO_MAP_LABELS_BLOCK_HPP
All vision-related classes and functions.
Definition cloud.hpp:49