Rerun C++ SDK
Loading...
Searching...
No Matches
annotation_context.hpp
1// DO NOT EDIT! This file was auto-generated by crates/build/re_types_builder/src/codegen/cpp/mod.rs
2// Based on "crates/store/re_types/definitions/rerun/components/annotation_context.fbs".
3
4#pragma once
5
6#include "../collection.hpp"
7#include "../component_descriptor.hpp"
8#include "../datatypes/class_description_map_elem.hpp"
9#include "../result.hpp"
10
11#include <cstdint>
12#include <memory>
13#include <type_traits>
14#include <utility>
15
16namespace arrow {
17 class Array;
18 class DataType;
19 class ListBuilder;
20} // namespace arrow
21
22namespace rerun::components {
23 /// **Component**: The annotation context provides additional information on how to display entities.
24 ///
25 /// Entities can use `datatypes::ClassId`s and `datatypes::KeypointId`s to provide annotations, and
26 /// the labels and colors will be looked up in the appropriate
27 /// annotation context. We use the *first* annotation context we find in the
28 /// path-hierarchy when searching up through the ancestors of a given entity
29 /// path.
30 ///
31 /// ⚠ **This type is _unstable_ and may change significantly in a way that the data won't be backwards compatible.**
32 ///
34 /// List of class descriptions, mapping class indices to class names, colors etc.
36
37 public: // START of extensions from annotation_context_ext.cpp:
38 /// Construct from an initializer list of elements from which `rerun::datatypes::ClassDescriptionMapElem`s can be constructed.
39 ///
40 /// This will then create a new collection of `rerun::datatypes::ClassDescriptionMapElem`.
41 ///
42 /// _Implementation note_:
43 /// We handle this type of conversion in a generic `rerun::ContainerAdapter`.
44 /// However, it is *still* necessary since initializer list overload resolution is handled
45 /// in a special way by the compiler, making this case not being covered by the general container case.
46 template <
47 typename TElement, //
48 typename = std::enable_if_t<
49 std::is_constructible_v<datatypes::ClassDescriptionMapElem, TElement>> //
50 >
51 AnnotationContext(std::initializer_list<TElement> class_descriptions) {
52 std::vector<datatypes::ClassDescriptionMapElem> class_map_new;
53 class_map_new.reserve(class_descriptions.size());
54 for (const auto& class_description : class_descriptions) {
55 class_map_new.emplace_back(std::move(class_description));
56 }
58 std::move(class_map_new)
59 );
60 }
61
62 // END of extensions from annotation_context_ext.cpp, start of generated code:
63
64 public:
65 AnnotationContext() = default;
66
68 : class_map(std::move(class_map_)) {}
69
70 AnnotationContext& operator=(
72 ) {
73 class_map = std::move(class_map_);
74 return *this;
75 }
76 };
77} // namespace rerun::components
78
79namespace rerun {
80 template <typename T>
81 struct Loggable;
82
83 /// \private
84 template <>
85 struct Loggable<components::AnnotationContext> {
86 static constexpr ComponentDescriptor Descriptor = "rerun.components.AnnotationContext";
87
88 /// Returns the arrow data type this type corresponds to.
89 static const std::shared_ptr<arrow::DataType>& arrow_datatype();
90
91 /// Serializes an array of `rerun::components::AnnotationContext` into an arrow array.
92 static Result<std::shared_ptr<arrow::Array>> to_arrow(
93 const components::AnnotationContext* instances, size_t num_instances
94 );
95
96 /// Fills an arrow array builder with an array of this type.
97 static rerun::Error fill_arrow_array_builder(
98 arrow::ListBuilder* builder, const components::AnnotationContext* elements,
99 size_t num_elements
100 );
101 };
102} // namespace rerun
Generic collection of elements that are roughly contiguous in memory.
Definition collection.hpp:49
static Collection< TElement > take_ownership(std::vector< TElement > &&data)
Takes ownership of a temporary std::vector, moving it into the collection.
Definition collection.hpp:200
Status outcome object (success or error) returned for fallible operations.
Definition error.hpp:99
All built-in components. See Types in the Rerun manual.
Definition rerun.hpp:79
All Rerun C++ types and functions are in the rerun namespace or one of its nested namespaces.
Definition rerun.hpp:23
Archetype: The annotation context provides additional information on how to display entities.
Definition annotation_context.hpp:70
Component: The annotation context provides additional information on how to display entities.
Definition annotation_context.hpp:33
rerun::Collection< rerun::datatypes::ClassDescriptionMapElem > class_map
List of class descriptions, mapping class indices to class names, colors etc.
Definition annotation_context.hpp:35
AnnotationContext(std::initializer_list< TElement > class_descriptions)
Construct from an initializer list of elements from which rerun::datatypes::ClassDescriptionMapElems ...
Definition annotation_context.hpp:51