🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
UnitManager.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstUtil/Unit.hpp"
25#include <unordered_map>
26#include <map>
27#include <string>
28#include <vector>
29
30
31AST_NAMESPACE_BEGIN
32
38class Unit;
39
43AST_UTIL_API Unit* aUnitGet(StringView name);
44
48AST_UTIL_API Unit* aUnitGetSI(Dimension dim);
49
53AST_UTIL_API Unit* aUnitGetDefault(Dimension dim);
54
55
59AST_UTIL_API errc_t aUnitAdd(const Unit& unit);
60
61
66AST_UTIL_API errc_t aUnitAdd(StringView name, const Unit& unit);
67
71AST_UTIL_API std::vector<Unit> aUnitsGetByDimension(Dimension dim);
72
73
75class AST_UTIL_API UnitManager
76{
77public:
80 static UnitManager& Instance();
81
83
85
88 errc_t addUnit(const Unit& unit);
89
93 errc_t addUnit(StringView name, const Unit& unit);
94
98 Unit* getUnit(StringView name);
99
103 Unit* getSiUnit(Dimension dim);
104
108 std::vector<Unit> getUnitsByDimension(Dimension dim) const;
109
110protected:
111
116 errc_t _addUnit(const std::string& name, const Unit& unit);
117
118 Unit* _getSiUnitCache(Dimension dim);
119protected:
120 std::unordered_map<std::string, Unit*> units_;
121 std::map<Dimension, Unit*> siUnits_;
122};
123
126AST_NAMESPACE_END
量纲
定义 Dimension.hpp:355
单位管理器
定义 UnitManager.hpp:76
std::map< Dimension, Unit * > siUnits_
国际制单位映射表
定义 UnitManager.hpp:121
std::unordered_map< std::string, Unit * > units_
单位映射表
定义 UnitManager.hpp:120
单位
定义 Unit.hpp:139
std::vector< Unit > aUnitsGetByDimension(Dimension dim)
获取指定量纲下的所有单位
定义 UnitManager.cpp:278
Unit * aUnitGetDefault(Dimension dim)
获取默认单位
定义 UnitManager.cpp:252
Unit * aUnitGet(StringView name)
获取单位
定义 UnitManager.cpp:242
Unit * aUnitGetSI(Dimension dim)
获取国际制单位
定义 UnitManager.cpp:247
errc_t aUnitAdd(const Unit &unit)
添加单位
定义 UnitManager.cpp:268