Sen API
Sen Libraries
Toggle main menu visibility
Loading...
Searching...
No Matches
unit_registry.h
Go to the documentation of this file.
1
// === unit_registry.h =================================================================================================
2
// Sen Infrastructure
3
// Released under the Apache License v2.0 (SPDX-License-Identifier Apache-2.0).
4
// See the LICENSE.txt file for more information.
5
// © Airbus SAS, Airbus Helicopters, and Airbus Defence and Space SAU/GmbH/SAS.
6
// =====================================================================================================================
7
8
#ifndef SEN_CORE_META_UNIT_REGISTRY_H
9
#define SEN_CORE_META_UNIT_REGISTRY_H
10
11
// sen
12
#include "
sen/core/base/class_helpers.h
"
// for SEN_NOCOPY_NOMOVE
13
#include "
sen/core/base/iterator_adapters.h
"
14
#include "
sen/core/meta/unit.h
"
// for Unit, UnitCategory
15
16
// std
17
#include <memory>
18
#include <optional>
19
#include <string_view>
// for string_view
20
#include <vector>
// for vector
21
22
namespace
sen
23
{
24
27
29
class
UnitRegistry final
30
{
31
SEN_NOCOPY_NOMOVE(UnitRegistry)
32
33
public
:
34
using
UnitList
= std::vector<Unit*>;
35
using
UnitStorage
= std::vector<std::unique_ptr<Unit>>;
36
using
UnitRange
=
sen::util::IteratorRange<util::SmartPtrIteratorAdapter<UnitStorage::const_iterator>
>;
37
38
public
:
39
static
const
UnitRegistry&
get
();
40
41
public
:
44
[[nodiscard]]
UnitRange
getUnits
() const noexcept;
45
48
[[nodiscard]]
UnitList
getUnitsByCategory
(
UnitCategory
category) const;
49
53
[[nodiscard]]
std
::optional<const
Unit
*>
searchUnitByName
(
std
::string_view name) const;
54
58
[[nodiscard]]
std
::optional<const
Unit
*>
searchUnitByAbbreviation
(
std
::string_view abbrev) const;
59
60
private:
61
UnitRegistry();
62
~UnitRegistry() = default;
63
64
private:
65
UnitStorage
units_;
66
};
67
69
70
}
// namespace sen
71
72
#endif
// SEN_CORE_META_UNIT_REGISTRY_H
class_helpers.h
Here we define a set of template meta-programming helpers to let the compiler take some decisions bas...
sen::Unit
Represents the definition of a unit.
Definition
unit.h:79
sen::UnitRegistry::UnitList
std::vector< Unit * > UnitList
Definition
unit_registry.h:34
sen::UnitRegistry::searchUnitByAbbreviation
std::optional< const Unit * > searchUnitByAbbreviation(std::string_view abbrev) const
Tries to find a unit with a specific abbreviation (case sensitive). It also searches in the built-in ...
sen::UnitRegistry::UnitRange
sen::util::IteratorRange< util::SmartPtrIteratorAdapter< UnitStorage::const_iterator > > UnitRange
Definition
unit_registry.h:36
sen::UnitRegistry::searchUnitByName
std::optional< const Unit * > searchUnitByName(std::string_view name) const
Tries to find a unit with a specific name (case sensitive) It also searches in the built-in units....
sen::UnitRegistry::get
static const UnitRegistry & get()
sen::UnitRegistry::getUnits
UnitRange getUnits() const noexcept
The currently registered units. Does not include the builtin units.
sen::UnitRegistry::getUnitsByCategory
UnitList getUnitsByCategory(UnitCategory category) const
Returns all registered units that belong to a given category. It also searches in the built-in units.
sen::UnitRegistry::UnitStorage
std::vector< std::unique_ptr< Unit > > UnitStorage
Definition
unit_registry.h:35
sen::UnitCategory
UnitCategory
Type of measurement.
Definition
unit.h:30
iterator_adapters.h
sen
Definition
assert.h:17
std
STL namespace.
sen::util::IteratorRange
Basic range abstraction to form a minimal range around two iterators.
Definition
iterator_adapters.h:25
unit.h
libs
core
include
sen
core
meta
unit_registry.h
Generated by
1.17.0