Flecs v4.1
A fast entity component system (ECS) for C & C++
Loading...
Searching...
No Matches
impl.hpp
Go to the documentation of this file.
1
6#pragma once
7
8namespace flecs {
9
11 // Import C module.
13
14 // Bridge between C++ types and flecs.units entities.
16
17 // Initialize world.entity(prefixes) scope.
18 world.entity<Prefixes>("::flecs::units::prefixes");
19
20 // Initialize prefixes.
21 world.entity<Yocto>("::flecs::units::prefixes::Yocto");
22 world.entity<Zepto>("::flecs::units::prefixes::Zepto");
23 world.entity<Atto>("::flecs::units::prefixes::Atto");
24 world.entity<Femto>("::flecs::units::prefixes::Femto");
25 world.entity<Pico>("::flecs::units::prefixes::Pico");
26 world.entity<Nano>("::flecs::units::prefixes::Nano");
27 world.entity<Micro>("::flecs::units::prefixes::Micro");
28 world.entity<Milli>("::flecs::units::prefixes::Milli");
29 world.entity<Centi>("::flecs::units::prefixes::Centi");
30 world.entity<Deci>("::flecs::units::prefixes::Deci");
31 world.entity<Deca>("::flecs::units::prefixes::Deca");
32 world.entity<Hecto>("::flecs::units::prefixes::Hecto");
33 world.entity<Kilo>("::flecs::units::prefixes::Kilo");
34 world.entity<Mega>("::flecs::units::prefixes::Mega");
35 world.entity<Giga>("::flecs::units::prefixes::Giga");
36 world.entity<Tera>("::flecs::units::prefixes::Tera");
37 world.entity<Peta>("::flecs::units::prefixes::Peta");
38 world.entity<Exa>("::flecs::units::prefixes::Exa");
39 world.entity<Zetta>("::flecs::units::prefixes::Zetta");
40 world.entity<Yotta>("::flecs::units::prefixes::Yotta");
41 world.entity<Kibi>("::flecs::units::prefixes::Kibi");
42 world.entity<Mebi>("::flecs::units::prefixes::Mebi");
43 world.entity<Gibi>("::flecs::units::prefixes::Gibi");
44 world.entity<Tebi>("::flecs::units::prefixes::Tebi");
45 world.entity<Pebi>("::flecs::units::prefixes::Pebi");
46 world.entity<Exbi>("::flecs::units::prefixes::Exbi");
47 world.entity<Zebi>("::flecs::units::prefixes::Zebi");
48 world.entity<Yobi>("::flecs::units::prefixes::Yobi");
49
50 // Initialize quantities.
51 world.entity<Duration>("::flecs::units::Duration");
52 world.entity<Time>("::flecs::units::Time");
53 world.entity<Mass>("::flecs::units::Mass");
54 world.entity<Force>("::flecs::units::Force");
55 world.entity<ElectricCurrent>("::flecs::units::ElectricCurrent");
56 world.entity<Amount>("::flecs::units::Amount");
57 world.entity<LuminousIntensity>("::flecs::units::LuminousIntensity");
58 world.entity<Length>("::flecs::units::Length");
59 world.entity<Pressure>("::flecs::units::Pressure");
60 world.entity<Speed>("::flecs::units::Speed");
61 world.entity<Temperature>("::flecs::units::Temperature");
62 world.entity<Data>("::flecs::units::Data");
63 world.entity<DataRate>("::flecs::units::DataRate");
64 world.entity<Angle>("::flecs::units::Angle");
65 world.entity<Frequency>("::flecs::units::Frequency");
66 world.entity<Uri>("::flecs::units::Uri");
67 world.entity<Color>("::flecs::units::Color");
68
69 // Initialize duration units.
71 "::flecs::units::Duration::PicoSeconds");
73 "::flecs::units::Duration::NanoSeconds");
75 "::flecs::units::Duration::MicroSeconds");
77 "::flecs::units::Duration::MilliSeconds");
79 "::flecs::units::Duration::Seconds");
81 "::flecs::units::Duration::Minutes");
83 "::flecs::units::Duration::Hours");
85 "::flecs::units::Duration::Days");
86
87 // Initialize time units.
88 world.entity<time::Date>("::flecs::units::Time::Date");
89
90 // Initialize mass units.
91 world.entity<mass::Grams>("::flecs::units::Mass::Grams");
92 world.entity<mass::KiloGrams>("::flecs::units::Mass::KiloGrams");
93
94 // Initialize current units.
96 ("::flecs::units::ElectricCurrent::Ampere");
97
98 // Initialize amount units.
99 world.entity<amount::Mole>("::flecs::units::Amount::Mole");
100
101 // Initialize luminous intensity units.
103 "::flecs::units::LuminousIntensity::Candela");
104
105 // Initialize force units.
106 world.entity<force::Newton>("::flecs::units::Force::Newton");
107
108 // Initialize length units.
109 world.entity<length::Meters>("::flecs::units::Length::Meters");
110 world.entity<length::PicoMeters>("::flecs::units::Length::PicoMeters");
111 world.entity<length::NanoMeters>("::flecs::units::Length::NanoMeters");
112 world.entity<length::MicroMeters>("::flecs::units::Length::MicroMeters");
113 world.entity<length::MilliMeters>("::flecs::units::Length::MilliMeters");
114 world.entity<length::CentiMeters>("::flecs::units::Length::CentiMeters");
115 world.entity<length::KiloMeters>("::flecs::units::Length::KiloMeters");
116 world.entity<length::Miles>("::flecs::units::Length::Miles");
117 world.entity<length::Pixels>("::flecs::units::Length::Pixels");
118
119 // Initialize pressure units.
120 world.entity<pressure::Pascal>("::flecs::units::Pressure::Pascal");
121 world.entity<pressure::Bar>("::flecs::units::Pressure::Bar");
122
123 // Initialize speed units.
125 "::flecs::units::Speed::MetersPerSecond");
127 "::flecs::units::Speed::KiloMetersPerSecond");
129 "::flecs::units::Speed::KiloMetersPerHour");
131 "::flecs::units::Speed::MilesPerHour");
132
133 // Initialize temperature units.
135 "::flecs::units::Temperature::Kelvin");
137 "::flecs::units::Temperature::Celsius");
139 "::flecs::units::Temperature::Fahrenheit");
140
141 // Initialize data units.
143 "::flecs::units::Data::Bits");
145 "::flecs::units::Data::KiloBits");
147 "::flecs::units::Data::MegaBits");
149 "::flecs::units::Data::GigaBits");
151 "::flecs::units::Data::Bytes");
153 "::flecs::units::Data::KiloBytes");
155 "::flecs::units::Data::MegaBytes");
157 "::flecs::units::Data::GigaBytes");
159 "::flecs::units::Data::KibiBytes");
161 "::flecs::units::Data::MebiBytes");
163 "::flecs::units::Data::GibiBytes");
164
165 // Initialize datarate units.
167 "::flecs::units::DataRate::BitsPerSecond");
169 "::flecs::units::DataRate::KiloBitsPerSecond");
171 "::flecs::units::DataRate::MegaBitsPerSecond");
173 "::flecs::units::DataRate::GigaBitsPerSecond");
175 "::flecs::units::DataRate::BytesPerSecond");
177 "::flecs::units::DataRate::KiloBytesPerSecond");
179 "::flecs::units::DataRate::MegaBytesPerSecond");
181 "::flecs::units::DataRate::GigaBytesPerSecond");
182
183 // Initialize hertz units.
185 "::flecs::units::Frequency::Hertz");
187 "::flecs::units::Frequency::KiloHertz");
189 "::flecs::units::Frequency::MegaHertz");
191 "::flecs::units::Frequency::GigaHertz");
192
193 // Initialize URI units.
195 "::flecs::units::Uri::Hyperlink");
197 "::flecs::units::Uri::Image");
199 "::flecs::units::Uri::File");
200
201 // Initialize angle units.
203 "::flecs::units::Angle::Radians");
205 "::flecs::units::Angle::Degrees");
206
207 // Initialize color units.
208 world.entity<color::Rgb>("::flecs::units::Color::Rgb");
209 world.entity<color::Hsl>("::flecs::units::Color::Hsl");
210 world.entity<color::Css>("::flecs::units::Color::Css");
211
212 // Initialize percentage.
213 world.entity<Percentage>("::flecs::units::Percentage");
214
215 // Initialize Bel.
216 world.entity<Bel>("::flecs::units::Bel");
217 world.entity<DeciBel>("::flecs::units::DeciBel");
218}
219
220}
FLECS_API void FlecsUnitsImport(ecs_world_t *world)
Units module import function.
flecs::entity module(const char *name=nullptr) const
Define a module.
units(flecs::world &world)
Construct the units module.
Definition impl.hpp:10
flecs::entity entity(Args &&... args) const
Create an entity.
Amount quantity.
Definition decl.hpp:111
Angle quantity.
Definition decl.hpp:125
Atto prefix (10^-18).
Definition decl.hpp:36
Bel unit.
Definition decl.hpp:484
Centi prefix (10^-2).
Definition decl.hpp:48
Color quantity.
Definition decl.hpp:131
Data rate quantity.
Definition decl.hpp:123
Data quantity.
Definition decl.hpp:121
Deca prefix (10^1).
Definition decl.hpp:52
DeciBel unit.
Definition decl.hpp:486
Deci prefix (10^-1).
Definition decl.hpp:50
Duration quantity.
Definition decl.hpp:99
Electric current quantity.
Definition decl.hpp:105
Exa prefix (10^18).
Definition decl.hpp:66
Exbi prefix (2^60).
Definition decl.hpp:82
Femto prefix (10^-15).
Definition decl.hpp:38
Force quantity.
Definition decl.hpp:109
Frequency quantity.
Definition decl.hpp:127
Gibi prefix (2^30).
Definition decl.hpp:76
Giga prefix (10^9).
Definition decl.hpp:60
Hecto prefix (10^2).
Definition decl.hpp:54
Kibi prefix (2^10).
Definition decl.hpp:72
Kilo prefix (10^3).
Definition decl.hpp:56
Length quantity.
Definition decl.hpp:113
Luminous intensity quantity.
Definition decl.hpp:107
Mass quantity.
Definition decl.hpp:103
Mebi prefix (2^20).
Definition decl.hpp:74
Mega prefix (10^6).
Definition decl.hpp:58
Micro prefix (10^-6).
Definition decl.hpp:44
Milli prefix (10^-3).
Definition decl.hpp:46
Nano prefix (10^-9).
Definition decl.hpp:42
Pebi prefix (2^50).
Definition decl.hpp:80
Percentage unit.
Definition decl.hpp:482
Peta prefix (10^15).
Definition decl.hpp:64
Pico prefix (10^-12).
Definition decl.hpp:40
Prefixes scope.
Definition decl.hpp:21
Pressure quantity.
Definition decl.hpp:115
Speed quantity.
Definition decl.hpp:117
Tebi prefix (2^40).
Definition decl.hpp:78
Temperature quantity.
Definition decl.hpp:119
Tera prefix (10^12).
Definition decl.hpp:62
Time quantity.
Definition decl.hpp:101
URI quantity.
Definition decl.hpp:129
Yobi prefix (2^80).
Definition decl.hpp:86
Yocto prefix (10^-24).
Definition decl.hpp:32
Yotta prefix (10^24).
Definition decl.hpp:70
Zebi prefix (2^70).
Definition decl.hpp:84
Zepto prefix (10^-21).
Definition decl.hpp:34
Zetta prefix (10^21).
Definition decl.hpp:68
CSS color unit.
Definition decl.hpp:476
HSL color unit.
Definition decl.hpp:474
RGB color unit.
Definition decl.hpp:472
KiloMetersPerHour unit.
Definition decl.hpp:333
KiloMetersPerSecond unit.
Definition decl.hpp:331
MetersPerSecond unit.
Definition decl.hpp:329
Units module.
Definition decl.hpp:10
The world.
Definition world.hpp:246