Auterion App SDK
Auterion SDK is a library that can be used by AuterionOS apps to communicate with the system.
Loading...
Searching...
No Matches
class_catalog.hpp
1/****************************************************************************
2 *
3 * Copyright 2026 Auterion AG. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright notice, this
9 * list of conditions and the following disclaimer.
10 *
11 * 2. Redistributions in binary form must reproduce the above copyright notice,
12 * this list of conditions and the following disclaimer in the documentation
13 * and/or other materials provided with the distribution.
14 *
15 * 3. Neither the name of the copyright holder nor the names of its contributors
16 * may be used to endorse or promote products derived from this software without
17 * specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE.
30 *
31 ****************************************************************************/
32
33#pragma once
34
35#include <cstddef>
36#include <cstdint>
37#include <limits>
38#include <map>
39#include <optional>
40#include <string>
41#include <vector>
42
43namespace auterion {
44
46inline constexpr uint32_t kUnknownClassId{std::numeric_limits<uint32_t>::max()};
47
51struct ClassEntry {
52 std::string name{};
54 std::optional<std::string> color{};
56 std::optional<std::string> category{};
57};
58
66 public:
67 ClassCatalog() = default;
68
74 static ClassCatalog fromModelOrder(const std::vector<std::string>& names_in_model_order);
75
81 static ClassCatalog fromClassIds(const std::map<uint32_t, std::string>& class_id_to_name);
82
90 static ClassCatalog fromEntries(const std::map<uint32_t, ClassEntry>& class_id_to_entry);
91
93 bool empty() const { return _entries.empty(); }
94
95 std::size_t size() const { return _entries.size(); }
96
98 const std::map<uint32_t, ClassEntry>& entries() const { return _entries; }
99
100 private:
101 std::map<uint32_t, ClassEntry> _entries;
102};
103
104} // namespace auterion
Names for the classes a detector reports, for the ground station to display.
Definition class_catalog.hpp:65
bool empty() const
True when no class is named.
Definition class_catalog.hpp:93
static ClassCatalog fromEntries(const std::map< uint32_t, ClassEntry > &class_id_to_entry)
Names keyed by id, with a colour and category per class.
static ClassCatalog fromClassIds(const std::map< uint32_t, std::string > &class_id_to_name)
Names keyed by id, for a detector that numbers its classes itself.
static ClassCatalog fromModelOrder(const std::vector< std::string > &names_in_model_order)
Names in model index order: element i names class i.
const std::map< uint32_t, ClassEntry > & entries() const
The named classes, keyed by class id.
Definition class_catalog.hpp:98
One class as the ground station should present it.
Definition class_catalog.hpp:51
std::optional< std::string > color
Colour as "#RRGGBB". Unset lets the ground station choose one.
Definition class_catalog.hpp:54
std::optional< std::string > category
Opaque per-class category, forwarded verbatim and never interpreted here.
Definition class_catalog.hpp:56
std::string name
Definition class_catalog.hpp:52