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>
20
#include <string_view>
// for string_view
21
#include <vector>
// for vector
22
23
namespace
sen
24
{
25
28
30
class
UnitRegistry final
31
{
32
SEN_NOCOPY_NOMOVE(UnitRegistry)
33
34
public
:
35
using
UnitList
= std::vector<Unit*>;
36
using
UnitStorage
= std::vector<std::unique_ptr<Unit>>;
37
using
UnitRange
=
sen::util::IteratorRange<util::SmartPtrIteratorAdapter<UnitStorage::const_iterator>
>;
38
39
public
:
40
static
const
UnitRegistry&
get
();
41
42
public
:
45
[[nodiscard]]
UnitRange
getUnits
() const noexcept;
46
49
[[nodiscard]]
UnitList
getUnitsByCategory
(
UnitCategory
category) const;
50
54
[[nodiscard]]
std
::optional<const
Unit
*>
searchUnitByName
(
std
::string_view name) const;
55
59
[[nodiscard]]
std
::optional<const
Unit
*>
searchUnitByAbbreviation
(
std
::string_view abbrev) const;
60
61
private:
62
UnitRegistry();
63
~UnitRegistry() = default;
64
65
private:
66
struct DeprecatedAbbreviation
67
{
68
std::string abbreviation;
69
const
Unit
* targetUnit;
70
};
71
72
UnitStorage
units_;
73
std::vector<DeprecatedAbbreviation> deprecatedAbbreviations_;
74
};
75
77
78
}
// namespace sen
79
80
#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:80
sen::UnitRegistry::UnitList
std::vector< Unit * > UnitList
Definition
unit_registry.h:35
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:37
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:36
sen::UnitCategory
UnitCategory
Type of measurement.
Definition
unit.h:30
iterator_adapters.h
sen
Definition
assert.h:19
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