Skip to content
Flecs v4.1
units.h
Go to the documentation of this file.
1/**
2 * @file addons/units.h
3 * @brief Units module.
4 *
5 * Built-in standard units. The units addon is not imported by default, even if
6 * the addon is included in the build. To import the module, do:
7 *
8 * In C:
9 *
10 * @code
11 * ECS_IMPORT(world, FlecsUnits);
12 * @endcode
13 *
14 * In C++:
15 *
16 * @code
17 * world.import<flecs::units>();
18 * @endcode
19 *
20 * As a result this module behaves just like an application-defined module,
21 * which means that the ids generated for the entities inside the module are not
22 * fixed, and depend on the order in which the module is imported.
23 */
24
25#ifdef FLECS_UNITS
26
27/**
28 * @defgroup c_addons_units Units.
29 * @ingroup c_addons
30 * Common unit annotations for reflection framework.
31 *
32 * @{
33 */
34
35#ifndef FLECS_MODULE
36#define FLECS_MODULE
37#endif
38
39#ifndef FLECS_META
40#define FLECS_META
41#endif
42
43#ifndef FLECS_UNITS_H
44#define FLECS_UNITS_H
45
46#ifdef __cplusplus
47extern "C" {
48#endif
49
50/**
51 * @defgroup c_addons_units_prefixes Prefixes
52 * @ingroup c_addons_units
53 * Prefixes to indicate unit count (e.g., Kilo, Mega).
54 *
55 * @{
56 */
57
58FLECS_API extern ecs_entity_t EcsUnitPrefixes; /**< Parent scope for prefixes. */
59
60FLECS_API extern ecs_entity_t EcsYocto; /**< Yocto unit prefix. */
61FLECS_API extern ecs_entity_t EcsZepto; /**< Zepto unit prefix. */
62FLECS_API extern ecs_entity_t EcsAtto; /**< Atto unit prefix. */
63FLECS_API extern ecs_entity_t EcsFemto; /**< Femto unit prefix. */
64FLECS_API extern ecs_entity_t EcsPico; /**< Pico unit prefix. */
65FLECS_API extern ecs_entity_t EcsNano; /**< Nano unit prefix. */
66FLECS_API extern ecs_entity_t EcsMicro; /**< Micro unit prefix. */
67FLECS_API extern ecs_entity_t EcsMilli; /**< Milli unit prefix. */
68FLECS_API extern ecs_entity_t EcsCenti; /**< Centi unit prefix. */
69FLECS_API extern ecs_entity_t EcsDeci; /**< Deci unit prefix. */
70FLECS_API extern ecs_entity_t EcsDeca; /**< Deca unit prefix. */
71FLECS_API extern ecs_entity_t EcsHecto; /**< Hecto unit prefix. */
72FLECS_API extern ecs_entity_t EcsKilo; /**< Kilo unit prefix. */
73FLECS_API extern ecs_entity_t EcsMega; /**< Mega unit prefix. */
74FLECS_API extern ecs_entity_t EcsGiga; /**< Giga unit prefix. */
75FLECS_API extern ecs_entity_t EcsTera; /**< Tera unit prefix. */
76FLECS_API extern ecs_entity_t EcsPeta; /**< Peta unit prefix. */
77FLECS_API extern ecs_entity_t EcsExa; /**< Exa unit prefix. */
78FLECS_API extern ecs_entity_t EcsZetta; /**< Zetta unit prefix. */
79FLECS_API extern ecs_entity_t EcsYotta; /**< Yotta unit prefix. */
80
81FLECS_API extern ecs_entity_t EcsKibi; /**< Kibi unit prefix. */
82FLECS_API extern ecs_entity_t EcsMebi; /**< Mebi unit prefix. */
83FLECS_API extern ecs_entity_t EcsGibi; /**< Gibi unit prefix. */
84FLECS_API extern ecs_entity_t EcsTebi; /**< Tebi unit prefix. */
85FLECS_API extern ecs_entity_t EcsPebi; /**< Pebi unit prefix. */
86FLECS_API extern ecs_entity_t EcsExbi; /**< Exbi unit prefix. */
87FLECS_API extern ecs_entity_t EcsZebi; /**< Zebi unit prefix. */
88FLECS_API extern ecs_entity_t EcsYobi; /**< Yobi unit prefix. */
89
90/** @} */
91
92/**
93 * @defgroup c_addons_units_duration Duration
94 * @ingroup c_addons_units
95 * @{
96 */
97
98FLECS_API extern ecs_entity_t EcsDuration; /**< Duration quantity. */
99FLECS_API extern ecs_entity_t EcsPicoSeconds; /**< PicoSeconds duration unit. */
100FLECS_API extern ecs_entity_t EcsNanoSeconds; /**< NanoSeconds duration unit. */
101FLECS_API extern ecs_entity_t EcsMicroSeconds; /**< MicroSeconds duration unit. */
102FLECS_API extern ecs_entity_t EcsMilliSeconds; /**< MilliSeconds duration unit. */
103FLECS_API extern ecs_entity_t EcsSeconds; /**< Seconds duration unit. */
104FLECS_API extern ecs_entity_t EcsMinutes; /**< Minutes duration unit. */
105FLECS_API extern ecs_entity_t EcsHours; /**< Hours duration unit. */
106FLECS_API extern ecs_entity_t EcsDays; /**< Days duration unit. */
107
108/** @} */
109
110/**
111 * @defgroup c_addons_units_time Time
112 * @ingroup c_addons_units
113 * @{
114 */
115
116FLECS_API extern ecs_entity_t EcsTime; /**< Time quantity. */
117FLECS_API extern ecs_entity_t EcsDate; /**< Date unit. */
118
119/** @} */
120
121/**
122 * @defgroup c_addons_units_mass Mass
123 * @ingroup c_addons_units
124 * @{
125 */
126
127FLECS_API extern ecs_entity_t EcsMass; /**< Mass quantity. */
128FLECS_API extern ecs_entity_t EcsGrams; /**< Grams unit. */
129FLECS_API extern ecs_entity_t EcsKiloGrams; /**< KiloGrams unit. */
130
131/** @} */
132
133/**
134 * @defgroup c_addons_units_electric_Current Electric Current
135 * @ingroup c_addons_units
136 * @{
137 */
138
139FLECS_API extern ecs_entity_t EcsElectricCurrent; /**< ElectricCurrent quantity. */
140FLECS_API extern ecs_entity_t EcsAmpere; /**< Ampere unit. */
141
142/** @} */
143
144/**
145 * @defgroup c_addons_units_amount Amount
146 * @ingroup c_addons_units
147 * @{
148 */
149
150FLECS_API extern ecs_entity_t EcsAmount; /**< Amount quantity. */
151FLECS_API extern ecs_entity_t EcsMole; /**< Mole unit. */
152
153/** @} */
154
155/**
156 * @defgroup c_addons_units_luminous_intensity Luminous Intensity
157 * @ingroup c_addons_units
158 * @{
159 */
160
161FLECS_API extern ecs_entity_t EcsLuminousIntensity; /**< LuminousIntensity quantity. */
162FLECS_API extern ecs_entity_t EcsCandela; /**< Candela unit. */
163
164/** @} */
165
166/**
167 * @defgroup c_addons_units_force Force
168 * @ingroup c_addons_units
169 * @{
170 */
171
172FLECS_API extern ecs_entity_t EcsForce; /**< Force quantity. */
173FLECS_API extern ecs_entity_t EcsNewton; /**< Newton unit. */
174
175/** @} */
176
177/**
178 * @defgroup c_addons_units_length Length
179 * @ingroup c_addons_units
180 * @{
181 */
182
183FLECS_API extern ecs_entity_t EcsLength; /**< Length quantity. */
184FLECS_API extern ecs_entity_t EcsMeters; /**< Meters unit. */
185FLECS_API extern ecs_entity_t EcsPicoMeters; /**< PicoMeters unit. */
186FLECS_API extern ecs_entity_t EcsNanoMeters; /**< NanoMeters unit. */
187FLECS_API extern ecs_entity_t EcsMicroMeters; /**< MicroMeters unit. */
188FLECS_API extern ecs_entity_t EcsMilliMeters; /**< MilliMeters unit. */
189FLECS_API extern ecs_entity_t EcsCentiMeters; /**< CentiMeters unit. */
190FLECS_API extern ecs_entity_t EcsKiloMeters; /**< KiloMeters unit. */
191FLECS_API extern ecs_entity_t EcsMiles; /**< Miles unit. */
192FLECS_API extern ecs_entity_t EcsPixels; /**< Pixels unit. */
193
194/** @} */
195
196/**
197 * @defgroup c_addons_units_pressure Pressure
198 * @ingroup c_addons_units
199 * @{
200 */
201
202FLECS_API extern ecs_entity_t EcsPressure; /**< Pressure quantity. */
203FLECS_API extern ecs_entity_t EcsPascal; /**< Pascal unit. */
204FLECS_API extern ecs_entity_t EcsBar; /**< Bar unit. */
205
206/** @} */
207
208/**
209 * @defgroup c_addons_units_speed Speed
210 * @ingroup c_addons_units
211 * @{
212 */
213
214FLECS_API extern ecs_entity_t EcsSpeed; /**< Speed quantity. */
215FLECS_API extern ecs_entity_t EcsMetersPerSecond; /**< MetersPerSecond unit. */
216FLECS_API extern ecs_entity_t EcsKiloMetersPerSecond; /**< KiloMetersPerSecond unit. */
217FLECS_API extern ecs_entity_t EcsKiloMetersPerHour; /**< KiloMetersPerHour unit. */
218FLECS_API extern ecs_entity_t EcsMilesPerHour; /**< MilesPerHour unit. */
219
220/** @} */
221
222/**
223 * @defgroup c_addons_units_temperature Temperature
224 * @ingroup c_addons_units
225 * @{
226 */
227
228FLECS_API extern ecs_entity_t EcsTemperature; /**< Temperature quantity. */
229FLECS_API extern ecs_entity_t EcsKelvin; /**< Kelvin unit. */
230FLECS_API extern ecs_entity_t EcsCelsius; /**< Celsius unit. */
231FLECS_API extern ecs_entity_t EcsFahrenheit; /**< Fahrenheit unit. */
232
233/** @} */
234
235/**
236 * @defgroup c_addons_units_data Data
237 * @ingroup c_addons_units
238 * @{
239 */
240
241FLECS_API extern ecs_entity_t EcsData; /**< Data quantity. */
242FLECS_API extern ecs_entity_t EcsBits; /**< Bits unit. */
243FLECS_API extern ecs_entity_t EcsKiloBits; /**< KiloBits unit. */
244FLECS_API extern ecs_entity_t EcsMegaBits; /**< MegaBits unit. */
245FLECS_API extern ecs_entity_t EcsGigaBits; /**< GigaBits unit. */
246FLECS_API extern ecs_entity_t EcsBytes; /**< Bytes unit. */
247FLECS_API extern ecs_entity_t EcsKiloBytes; /**< KiloBytes unit. */
248FLECS_API extern ecs_entity_t EcsMegaBytes; /**< MegaBytes unit. */
249FLECS_API extern ecs_entity_t EcsGigaBytes; /**< GigaBytes unit. */
250FLECS_API extern ecs_entity_t EcsKibiBytes; /**< KibiBytes unit. */
251FLECS_API extern ecs_entity_t EcsMebiBytes; /**< MebiBytes unit. */
252FLECS_API extern ecs_entity_t EcsGibiBytes; /**< GibiBytes unit. */
253
254/** @} */
255
256/**
257 * @defgroup c_addons_units_datarate Data Rate
258 * @ingroup c_addons_units
259 * @{
260 */
261
262FLECS_API extern ecs_entity_t EcsDataRate; /**< DataRate quantity. */
263FLECS_API extern ecs_entity_t EcsBitsPerSecond; /**< BitsPerSecond unit. */
264FLECS_API extern ecs_entity_t EcsKiloBitsPerSecond; /**< KiloBitsPerSecond unit. */
265FLECS_API extern ecs_entity_t EcsMegaBitsPerSecond; /**< MegaBitsPerSecond unit. */
266FLECS_API extern ecs_entity_t EcsGigaBitsPerSecond; /**< GigaBitsPerSecond unit. */
267FLECS_API extern ecs_entity_t EcsBytesPerSecond; /**< BytesPerSecond unit. */
268FLECS_API extern ecs_entity_t EcsKiloBytesPerSecond; /**< KiloBytesPerSecond unit. */
269FLECS_API extern ecs_entity_t EcsMegaBytesPerSecond; /**< MegaBytesPerSecond unit. */
270FLECS_API extern ecs_entity_t EcsGigaBytesPerSecond; /**< GigaBytesPerSecond unit. */
271
272/** @} */
273
274/**
275 * @defgroup c_addons_units_angle Angle
276 * @ingroup c_addons_units
277 * @{
278 */
279
280FLECS_API extern ecs_entity_t EcsAngle; /**< Angle quantity. */
281FLECS_API extern ecs_entity_t EcsRadians; /**< Radians unit. */
282FLECS_API extern ecs_entity_t EcsDegrees; /**< Degrees unit. */
283
284/** @} */
285
286/**
287 * @defgroup c_addons_units_frequency Frequency
288 * @ingroup c_addons_units
289 * @{
290 */
291
292FLECS_API extern ecs_entity_t EcsFrequency; /**< Frequency quantity. */
293FLECS_API extern ecs_entity_t EcsHertz; /**< Hertz unit. */
294FLECS_API extern ecs_entity_t EcsKiloHertz; /**< KiloHertz unit. */
295FLECS_API extern ecs_entity_t EcsMegaHertz; /**< MegaHertz unit. */
296FLECS_API extern ecs_entity_t EcsGigaHertz; /**< GigaHertz unit. */
297
298/** @} */
299
300/**
301 * @defgroup c_addons_units_uri Uri
302 * @ingroup c_addons_units
303 * @{
304 */
305
306FLECS_API extern ecs_entity_t EcsUri; /**< URI quantity. */
307FLECS_API extern ecs_entity_t EcsUriHyperlink; /**< UriHyperlink unit. */
308FLECS_API extern ecs_entity_t EcsUriImage; /**< UriImage unit. */
309FLECS_API extern ecs_entity_t EcsUriFile; /**< UriFile unit. */
310
311/** @} */
312
313/**
314 * @defgroup c_addons_units_color Color
315 * @ingroup c_addons_units
316 * @{
317 */
318
319FLECS_API extern ecs_entity_t EcsColor; /**< Color quantity. */
320FLECS_API extern ecs_entity_t EcsColorRgb; /**< ColorRgb unit. */
321FLECS_API extern ecs_entity_t EcsColorHsl; /**< ColorHsl unit. */
322FLECS_API extern ecs_entity_t EcsColorCss; /**< ColorCss unit. */
323
324/** @} */
325
326
327FLECS_API extern ecs_entity_t EcsAcceleration; /**< Acceleration unit. */
328FLECS_API extern ecs_entity_t EcsPercentage; /**< Percentage unit. */
329FLECS_API extern ecs_entity_t EcsBel; /**< Bel unit. */
330FLECS_API extern ecs_entity_t EcsDeciBel; /**< DeciBel unit. */
331
332////////////////////////////////////////////////////////////////////////////////
333//// Module
334////////////////////////////////////////////////////////////////////////////////
335
336/** Units module import function.
337 * Usage:
338 * @code
339 * ECS_IMPORT(world, FlecsUnits)
340 * @endcode
341 *
342 * @param world The world.
343 */
344FLECS_API
346 ecs_world_t *world);
347
348#ifdef __cplusplus
349}
350#endif
351
352#endif
353
354/** @} */
355
356#endif
FLECS_API ecs_entity_t EcsMole
Mole unit.
FLECS_API ecs_entity_t EcsAmount
Amount quantity.
FLECS_API ecs_entity_t EcsAngle
Angle quantity.
FLECS_API ecs_entity_t EcsDegrees
Degrees unit.
FLECS_API ecs_entity_t EcsRadians
Radians unit.
FLECS_API ecs_entity_t EcsColorHsl
ColorHsl unit.
FLECS_API ecs_entity_t EcsColorRgb
ColorRgb unit.
FLECS_API ecs_entity_t EcsColorCss
ColorCss unit.
FLECS_API ecs_entity_t EcsColor
Color quantity.
FLECS_API ecs_entity_t EcsGigaBits
GigaBits unit.
FLECS_API ecs_entity_t EcsBits
Bits unit.
FLECS_API ecs_entity_t EcsKibiBytes
KibiBytes unit.
FLECS_API ecs_entity_t EcsKiloBits
KiloBits unit.
FLECS_API ecs_entity_t EcsBytes
Bytes unit.
FLECS_API ecs_entity_t EcsMegaBytes
MegaBytes unit.
FLECS_API ecs_entity_t EcsGigaBytes
GigaBytes unit.
FLECS_API ecs_entity_t EcsKiloBytes
KiloBytes unit.
FLECS_API ecs_entity_t EcsMegaBits
MegaBits unit.
FLECS_API ecs_entity_t EcsMebiBytes
MebiBytes unit.
FLECS_API ecs_entity_t EcsData
Data quantity.
FLECS_API ecs_entity_t EcsGibiBytes
GibiBytes unit.
FLECS_API ecs_entity_t EcsGigaBitsPerSecond
GigaBitsPerSecond unit.
FLECS_API ecs_entity_t EcsMegaBitsPerSecond
MegaBitsPerSecond unit.
FLECS_API ecs_entity_t EcsBytesPerSecond
BytesPerSecond unit.
FLECS_API ecs_entity_t EcsBitsPerSecond
BitsPerSecond unit.
FLECS_API ecs_entity_t EcsKiloBytesPerSecond
KiloBytesPerSecond unit.
FLECS_API ecs_entity_t EcsKiloBitsPerSecond
KiloBitsPerSecond unit.
FLECS_API ecs_entity_t EcsMegaBytesPerSecond
MegaBytesPerSecond unit.
FLECS_API ecs_entity_t EcsDataRate
DataRate quantity.
FLECS_API ecs_entity_t EcsGigaBytesPerSecond
GigaBytesPerSecond unit.
FLECS_API ecs_entity_t EcsNanoSeconds
NanoSeconds duration unit.
FLECS_API ecs_entity_t EcsHours
Hours duration unit.
FLECS_API ecs_entity_t EcsMilliSeconds
MilliSeconds duration unit.
FLECS_API ecs_entity_t EcsDays
Days duration unit.
FLECS_API ecs_entity_t EcsMinutes
Minutes duration unit.
FLECS_API ecs_entity_t EcsSeconds
Seconds duration unit.
FLECS_API ecs_entity_t EcsDuration
Duration quantity.
FLECS_API ecs_entity_t EcsMicroSeconds
MicroSeconds duration unit.
FLECS_API ecs_entity_t EcsPicoSeconds
PicoSeconds duration unit.
FLECS_API ecs_entity_t EcsElectricCurrent
ElectricCurrent quantity.
FLECS_API ecs_entity_t EcsAmpere
Ampere unit.
FLECS_API ecs_entity_t EcsForce
Force quantity.
FLECS_API ecs_entity_t EcsNewton
Newton unit.
FLECS_API ecs_entity_t EcsHertz
Hertz unit.
FLECS_API ecs_entity_t EcsKiloHertz
KiloHertz unit.
FLECS_API ecs_entity_t EcsFrequency
Frequency quantity.
FLECS_API ecs_entity_t EcsMegaHertz
MegaHertz unit.
FLECS_API ecs_entity_t EcsGigaHertz
GigaHertz unit.
FLECS_API ecs_entity_t EcsKiloMeters
KiloMeters unit.
FLECS_API ecs_entity_t EcsPicoMeters
PicoMeters unit.
FLECS_API ecs_entity_t EcsNanoMeters
NanoMeters unit.
FLECS_API ecs_entity_t EcsMiles
Miles unit.
FLECS_API ecs_entity_t EcsCentiMeters
CentiMeters unit.
FLECS_API ecs_entity_t EcsMicroMeters
MicroMeters unit.
FLECS_API ecs_entity_t EcsMilliMeters
MilliMeters unit.
FLECS_API ecs_entity_t EcsLength
Length quantity.
FLECS_API ecs_entity_t EcsPixels
Pixels unit.
FLECS_API ecs_entity_t EcsMeters
Meters unit.
FLECS_API ecs_entity_t EcsLuminousIntensity
LuminousIntensity quantity.
FLECS_API ecs_entity_t EcsCandela
Candela unit.
FLECS_API ecs_entity_t EcsMass
Mass quantity.
FLECS_API ecs_entity_t EcsGrams
Grams unit.
FLECS_API ecs_entity_t EcsKiloGrams
KiloGrams unit.
FLECS_API ecs_entity_t EcsMebi
Mebi unit prefix.
FLECS_API ecs_entity_t EcsDeca
Deca unit prefix.
FLECS_API ecs_entity_t EcsHecto
Hecto unit prefix.
FLECS_API ecs_entity_t EcsZetta
Zetta unit prefix.
FLECS_API ecs_entity_t EcsMicro
Micro unit prefix.
FLECS_API ecs_entity_t EcsYocto
Yocto unit prefix.
FLECS_API ecs_entity_t EcsKilo
Kilo unit prefix.
FLECS_API ecs_entity_t EcsYobi
Yobi unit prefix.
FLECS_API ecs_entity_t EcsAtto
Atto unit prefix.
FLECS_API ecs_entity_t EcsYotta
Yotta unit prefix.
FLECS_API ecs_entity_t EcsExa
Exa unit prefix.
FLECS_API ecs_entity_t EcsPico
Pico unit prefix.
FLECS_API ecs_entity_t EcsCenti
Centi unit prefix.
FLECS_API ecs_entity_t EcsKibi
Kibi unit prefix.
FLECS_API ecs_entity_t EcsGibi
Gibi unit prefix.
FLECS_API ecs_entity_t EcsTera
Tera unit prefix.
FLECS_API ecs_entity_t EcsNano
Nano unit prefix.
FLECS_API ecs_entity_t EcsExbi
Exbi unit prefix.
FLECS_API ecs_entity_t EcsUnitPrefixes
Parent scope for prefixes.
FLECS_API ecs_entity_t EcsMilli
Milli unit prefix.
FLECS_API ecs_entity_t EcsTebi
Tebi unit prefix.
FLECS_API ecs_entity_t EcsPebi
Pebi unit prefix.
FLECS_API ecs_entity_t EcsPeta
Peta unit prefix.
FLECS_API ecs_entity_t EcsDeci
Deci unit prefix.
FLECS_API ecs_entity_t EcsMega
Mega unit prefix.
FLECS_API ecs_entity_t EcsZepto
Zepto unit prefix.
FLECS_API ecs_entity_t EcsZebi
Zebi unit prefix.
FLECS_API ecs_entity_t EcsGiga
Giga unit prefix.
FLECS_API ecs_entity_t EcsFemto
Femto unit prefix.
FLECS_API ecs_entity_t EcsPascal
Pascal unit.
FLECS_API ecs_entity_t EcsBar
Bar unit.
FLECS_API ecs_entity_t EcsPressure
Pressure quantity.
FLECS_API ecs_entity_t EcsSpeed
Speed quantity.
FLECS_API ecs_entity_t EcsMilesPerHour
MilesPerHour unit.
FLECS_API ecs_entity_t EcsKiloMetersPerSecond
KiloMetersPerSecond unit.
FLECS_API ecs_entity_t EcsMetersPerSecond
MetersPerSecond unit.
FLECS_API ecs_entity_t EcsKiloMetersPerHour
KiloMetersPerHour unit.
FLECS_API ecs_entity_t EcsTemperature
Temperature quantity.
FLECS_API ecs_entity_t EcsFahrenheit
Fahrenheit unit.
FLECS_API ecs_entity_t EcsCelsius
Celsius unit.
FLECS_API ecs_entity_t EcsKelvin
Kelvin unit.
FLECS_API ecs_entity_t EcsDate
Date unit.
FLECS_API ecs_entity_t EcsTime
Time quantity.
FLECS_API ecs_entity_t EcsUri
URI quantity.
FLECS_API ecs_entity_t EcsUriHyperlink
UriHyperlink unit.
FLECS_API ecs_entity_t EcsUriFile
UriFile unit.
FLECS_API ecs_entity_t EcsUriImage
UriImage unit.
FLECS_API void FlecsUnitsImport(ecs_world_t *world)
Units module import function.
FLECS_API ecs_entity_t EcsPercentage
Percentage unit.
FLECS_API ecs_entity_t EcsDeciBel
DeciBel unit.
FLECS_API ecs_entity_t EcsAcceleration
Acceleration unit.
FLECS_API ecs_entity_t EcsBel
Bel unit.
ecs_id_t ecs_entity_t
An entity identifier.
Definition flecs.h:395
struct ecs_world_t ecs_world_t
A world is the container for all ECS data and supporting features.
Definition flecs.h:439