1/*
2 * SPDX-FileCopyrightText: 2007-2009 Petri Damstén <damu@iki.fi>
3 * SPDX-FileCopyrightText: 2014 John Layt <jlayt@kde.org>
4 *
5 * SPDX-License-Identifier: LGPL-2.0-or-later
6 */
7
8#ifndef KUNITCONVERSION_UNIT_H
9#define KUNITCONVERSION_UNIT_H
10
11#include "kunitconversion/kunitconversion_export.h"
12
13#include <QExplicitlySharedDataPointer>
14#include <QString>
15
16/*!
17 * \namespace KUnitConversion
18 * \inmodule KUnitConversion
19 */
20namespace KUnitConversion
21{
22/*!
23 * \enum KUnitConversion::CategoryId
24 * \value InvalidCategory
25 * \value LengthCategory
26 * \value AreaCategory
27 * \value VolumeCategory
28 * \value TemperatureCategory
29 * \value VelocityCategory
30 * \value MassCategory
31 * \value PressureCategory
32 * \value EnergyCategory
33 * \value CurrencyCategory
34 * \value PowerCategory
35 * \value TimeCategory
36 * \value FuelEfficiencyCategory
37 * \value DensityCategory
38 * \value WeightPerAreaCategory
39 * \value AccelerationCategory
40 * \value AngleCategory
41 * \value FrequencyCategory
42 * \value ForceCategory
43 * \value [since 5.27] ThermalConductivityCategory
44 * \value [since 5.27] ThermalFluxCategory
45 * \value [since 5.27] ThermalGenerationCategory
46 * \value [since 5.27] VoltageCategory
47 * \value [since 5.27] ElectricalCurrentCategory
48 * \value [since 5.27] ElectricalResistanceCategory
49 * \value [since 5.53] PermeabilityCategory
50 * \value [since 5.61] BinaryDataCategory
51 */
52enum CategoryId {
53 InvalidCategory = -1,
54 LengthCategory,
55 AreaCategory,
56 VolumeCategory,
57 TemperatureCategory,
58 VelocityCategory,
59 MassCategory,
60 PressureCategory,
61 EnergyCategory,
62 CurrencyCategory,
63 PowerCategory,
64 TimeCategory,
65 FuelEfficiencyCategory,
66 DensityCategory,
67 WeightPerAreaCategory,
68 AccelerationCategory,
69 AngleCategory,
70 FrequencyCategory,
71 ForceCategory,
72 ThermalConductivityCategory,
73 ThermalFluxCategory,
74 ThermalGenerationCategory,
75 VoltageCategory,
76 ElectricalCurrentCategory,
77 ElectricalResistanceCategory,
78 PermeabilityCategory,
79 BinaryDataCategory
80};
81
82/*!
83 * \enum KUnitConversion::UnitId
84 * \value InvalidUnit
85 * \value NoUnit
86 * \value Percent
87 *
88 * \value SquareYottameter
89 * \value SquareZettameter
90 * \value SquareExameter
91 * \value SquarePetameter
92 * \value SquareTerameter
93 * \value SquareGigameter
94 * \value SquareMegameter
95 * \value SquareKilometer
96 * \value SquareHectometer
97 * \value SquareDecameter
98 * \value SquareMeter
99 * \value SquareDecimeter
100 * \value SquareCentimeter
101 * \value SquareMillimeter
102 * \value SquareMicrometer
103 * \value SquareNanometer
104 * \value SquarePicometer
105 * \value SquareFemtometer
106 * \value SquareAttometer
107 * \value SquareZeptometer
108 * \value SquareYoctometer
109 * \value Acre
110 * \value SquareFoot
111 * \value SquareInch
112 * \value SquareMile
113 *
114 * \value Yottameter
115 * \value Zettameter
116 * \value Exameter
117 * \value Petameter
118 * \value Terameter
119 * \value Gigameter
120 * \value Megameter
121 * \value Kilometer
122 * \value Hectometer
123 * \value Decameter
124 * \value Meter
125 * \value Decimeter
126 * \value Centimeter
127 * \value Millimeter
128 * \value Micrometer
129 * \value Nanometer
130 * \value Picometer
131 * \value Femtometer
132 * \value Attometer
133 * \value Zeptometer
134 * \value Yoctometer
135 * \value Inch
136 * \value Foot
137 * \value Yard
138 * \value Mile
139 * \value NauticalMile
140 * \value LightYear
141 * \value Parsec
142 * \value AstronomicalUnit
143 * \value Thou
144 * \value Angstrom
145 * \value RackUnit
146 * \value Link
147 * \value Chain
148 * \value Furlong
149 * \value Fathom
150 * \value RodPerchPole
151 *
152 * \value CubicYottameter
153 * \value CubicZettameter
154 * \value CubicExameter
155 * \value CubicPetameter
156 * \value CubicTerameter
157 * \value CubicGigameter
158 * \value CubicMegameter
159 * \value CubicKilometer
160 * \value CubicHectometer
161 * \value CubicDecameter
162 * \value CubicMeter
163 * \value CubicDecimeter
164 * \value CubicCentimeter
165 * \value CubicMillimeter
166 * \value CubicMicrometer
167 * \value CubicNanometer
168 * \value CubicPicometer
169 * \value CubicFemtometer
170 * \value CubicAttometer
171 * \value CubicZeptometer
172 * \value CubicYoctometer
173 * \value Yottaliter
174 * \value Zettaliter
175 * \value Exaliter
176 * \value Petaliter
177 * \value Teraliter
178 * \value Gigaliter
179 * \value Megaliter
180 * \value Kiloliter
181 * \value Hectoliter
182 * \value Decaliter
183 * \value Liter
184 * \value Deciliter
185 * \value Centiliter
186 * \value Milliliter
187 * \value Microliter
188 * \value Nanoliter
189 * \value Picoliter
190 * \value Femtoliter
191 * \value Attoliter
192 * \value Zeptoliter
193 * \value Yoctoliter
194 * \value CubicFoot
195 * \value CubicInch
196 * \value CubicMile
197 * \value FluidOunce
198 * \value Cup
199 * \value Teaspoon
200 * \value Tablespoon
201 * \value GallonUS
202 * \value PintImperial
203 * \value [since 5.53] OilBarrel
204 * \value [since 5.70] GallonImperial
205 * \value [since 5.70] PintUS
206 *
207 * \value Yottagram
208 * \value Zettagram
209 * \value Exagram
210 * \value Petagram
211 * \value Teragram
212 * \value Gigagram
213 * \value Megagram
214 * \value Kilogram
215 * \value Hectogram
216 * \value Decagram
217 * \value Gram
218 * \value Decigram
219 * \value Centigram
220 * \value Milligram
221 * \value Microgram
222 * \value Nanogram
223 * \value Picogram
224 * \value Femtogram
225 * \value Attogram
226 * \value Zeptogram
227 * \value Yoctogram
228 * \value Ton
229 * \value Carat
230 * \value Pound
231 * \value Ounce
232 * \value TroyOunce
233 * \value MassNewton
234 * \value Kilonewton
235 *
236 * \value [since 5.26] Stone
237 *
238 * \value Yottapascal
239 * \value Zettapascal
240 * \value Exapascal
241 * \value Petapascal
242 * \value Terapascal
243 * \value Gigapascal
244 * \value Megapascal
245 * \value Kilopascal
246 * \value Hectopascal
247 * \value Decapascal
248 * \value Pascal
249 * \value Decipascal
250 * \value Centipascal
251 * \value Millipascal
252 * \value Micropascal
253 * \value Nanopascal
254 * \value Picopascal
255 * \value Femtopascal
256 * \value Attopascal
257 * \value Zeptopascal
258 * \value Yoctopascal
259 * \value Bar
260 * \value Millibar
261 * \value Decibar
262 * \value Torr
263 * \value TechnicalAtmosphere
264 * \value Atmosphere
265 * \value PoundForcePerSquareInch
266 * \value InchesOfMercury
267 * \value MillimetersOfMercury
268 *
269 * \value Kelvin
270 * \value Celsius
271 * \value Fahrenheit
272 * \value Rankine
273 * \value Delisle
274 * \value TemperatureNewton
275 * \value Reaumur
276 * \value Romer
277 *
278 * \value Yottajoule
279 * \value Zettajoule
280 * \value Exajoule
281 * \value Petajoule
282 * \value Terajoule
283 * \value Gigajoule
284 * \value Megajoule
285 * \value Kilojoule
286 * \value Hectojoule
287 * \value Decajoule
288 * \value Joule
289 * \value Decijoule
290 * \value Centijoule
291 * \value Millijoule
292 * \value Microjoule
293 * \value Nanojoule
294 * \value Picojoule
295 * \value Femtojoule
296 * \value Attojoule
297 * \value Zeptojoule
298 * \value Yoctojoule
299 * \value GuidelineDailyAmount
300 * \value Electronvolt
301 * \value Rydberg
302 * \value Kilocalorie
303 * \value PhotonWavelength
304 * \value KiloJoulePerMole
305 * \value JoulePerMole
306 * \value [since 5.27] Btu
307 * \value [since 5.27] Erg
308 *
309 * \value Eur
310 * \value Ats
311 * \value Bef
312 * \value Nlg
313 * \value Fim
314 * \value Frf
315 * \value Dem
316 * \value Iep
317 * \value Itl
318 * \value Luf
319 * \value Pte
320 * \value Esp
321 * \value Grd
322 * \value Sit
323 * \value Cyp
324 * \value Mtl
325 * \value Skk
326 * \value Usd
327 * \value Jpy
328 * \value Bgn
329 * \value Czk
330 * \value Dkk
331 * \value Eek
332 * \value Gbp
333 * \value Huf
334 * \value Ltl
335 * \value Lvl
336 * \value Pln
337 * \value Ron
338 * \value Sek
339 * \value Chf
340 * \value Nok
341 * \value Hrk
342 * \value Rub
343 * \value Try
344 * \value Aud
345 * \value Brl
346 * \value Cad
347 * \value Cny
348 * \value Hkd
349 * \value Idr
350 * \value Inr
351 * \value Krw
352 * \value Mxn
353 * \value Myr
354 * \value Nzd
355 * \value Php
356 * \value Sgd
357 * \value Thb
358 * \value Zar
359 * \value Ils
360 * \value Isk
361 *
362 * \value MeterPerSecond
363 * \value KilometerPerHour
364 * \value MilePerHour
365 * \value FootPerSecond
366 * \value InchPerSecond
367 * \value Knot
368 * \value Mach
369 * \value SpeedOfLight
370 * \value Beaufort
371 *
372 * \value Yottawatt
373 * \value Zettawatt
374 * \value Exawatt
375 * \value Petawatt
376 * \value Terawatt
377 * \value Gigawatt
378 * \value Megawatt
379 * \value Kilowatt
380 * \value Hectowatt
381 * \value Decawatt
382 * \value Watt
383 * \value Deciwatt
384 * \value Centiwatt
385 * \value Milliwatt
386 * \value Microwatt
387 * \value Nanowatt
388 * \value Picowatt
389 * \value Femtowatt
390 * \value Attowatt
391 * \value Zeptowatt
392 * \value Yoctowatt
393 * \value Horsepower
394 * \value [since 5.62] DecibelKilowatt
395 * \value [since 5.62] DecibelWatt
396 * \value [since 5.62] DecibelMilliwatt
397 * \value [since 5.62] DecibelMicrowatt
398 *
399 * \value Yottasecond
400 * \value Zettasecond
401 * \value Exasecond
402 * \value Petasecond
403 * \value Terasecond
404 * \value Gigasecond
405 * \value Megasecond
406 * \value Kilosecond
407 * \value Hectosecond
408 * \value Decasecond
409 * \value Second
410 * \value Decisecond
411 * \value Centisecond
412 * \value Millisecond
413 * \value Microsecond
414 * \value Nanosecond
415 * \value Picosecond
416 * \value Femtosecond
417 * \value Attosecond
418 * \value Zeptosecond
419 * \value Yoctosecond
420 * \value Minute
421 * \value Hour
422 * \value Day
423 * \value Week
424 * \value JulianYear
425 * \value LeapYear
426 * \value Year
427 *
428 * \value LitersPer100Kilometers
429 * \value MilePerUsGallon
430 * \value MilePerImperialGallon
431 * \value KilometrePerLitre
432 *
433 * \value YottakilogramsPerCubicMeter
434 * \value ZettakilogramPerCubicMeter
435 * \value ExakilogramPerCubicMeter
436 * \value PetakilogramPerCubicMeter
437 * \value TerakilogramPerCubicMeter
438 * \value GigakilogramPerCubicMeter
439 * \value MegakilogramPerCubicMeter
440 * \value KilokilogramPerCubicMeter
441 * \value HectokilogramsPerCubicMeter
442 * \value DecakilogramsPerCubicMeter
443 * \value KilogramsPerCubicMeter
444 * \value DecikilogramsPerCubicMeter
445 * \value CentikilogramsPerCubicMeter
446 * \value MillikilogramsPerCubicMeter
447 * \value MicrokilogramsPerCubicMeter
448 * \value NanokilogramsPerCubicMeter
449 * \value PicokilogramsPerCubicMeter
450 * \value FemtokilogramsPerCubicMeter
451 * \value AttokilogramsPerCubicMeter
452 * \value ZeptokilogramsPerCubicMeter
453 * \value YoctokilogramsPerCubicMeter
454 * \value KilogramPerLiter
455 * \value GramPerLiter
456 * \value GramPerMilliliter
457 * \value OuncePerCubicInch
458 * \value OuncePerCubicFoot
459 * \value OuncePerCubicYard
460 * \value PoundPerCubicInch
461 * \value PoundPerCubicFoot
462 * \value PoundPerCubicYard
463 *
464 * \value GramsPerSquareMeter
465 * \value OuncesPerSquareYard
466 *
467 * \value MetresPerSecondSquared
468 * \value FeetPerSecondSquared
469 * \value StandardGravity
470 *
471 * \value Yottanewton
472 * \value Zettanewton
473 * \value Exanewton
474 * \value Petanewton
475 * \value Teranewton
476 * \value Giganewton
477 * \value Meganewton
478 * \value KilonewtonForce
479 * \value Hectonewton
480 * \value Decanewton
481 * \value Newton
482 * \value Decinewton
483 * \value Centinewton
484 * \value Millinewton
485 * \value Micronewton
486 * \value Nanonewton
487 * \value Piconewton
488 * \value Femtonewton
489 * \value Attonewton
490 * \value Zeptonewton
491 * \value Yoctonewton
492 * \value Dyne
493 * \value Kilopond
494 * \value PoundForce
495 * \value Poundal
496 *
497 * \value Degree
498 * \value Radian
499 * \value Gradian
500 * \value ArcMinute
501 * \value ArcSecond
502 *
503 * \value Yottahertz
504 * \value Zettahertz
505 * \value Exahertz
506 * \value Petahertz
507 * \value Terahertz
508 * \value Gigahertz
509 * \value Megahertz
510 * \value Kilohertz
511 * \value Hectohertz
512 * \value Decahertz
513 * \value Hertz
514 * \value Decihertz
515 * \value Centihertz
516 * \value Millihertz
517 * \value Microhertz
518 * \value Nanohertz
519 * \value Picohertz
520 * \value Femtohertz
521 * \value Attohertz
522 * \value Zeptohertz
523 * \value Yoctohertz
524 * \value RPM
525 *
526 * \value [since 5.27] WattPerMeterKelvin
527 * \value [since 5.27] BtuPerFootHourFahrenheit
528 * \value [since 5.27] BtuPerSquareFootHourFahrenheitPerInch
529 *
530 * \value [since 5.27] WattPerSquareMeter
531 * \value [since 5.27] BtuPerHourPerSquareFoot
532 *
533 * \value [since 5.27] WattPerCubicMeter
534 * \value [since 5.27] BtuPerHourPerCubicFoot
535 *
536 * \value [since 5.27] Yottavolts
537 * \value [since 5.27] Zettavolts
538 * \value [since 5.27] Exavolts
539 * \value [since 5.27] Petavolts
540 * \value [since 5.27] Teravolts
541 * \value [since 5.27] Gigavolts
542 * \value [since 5.27] Megavolts
543 * \value [since 5.27] Kilovolts
544 * \value [since 5.27] Hectovolts
545 * \value [since 5.27] Decavolts
546 * \value [since 5.27] Volts
547 * \value [since 5.27] Decivolts
548 * \value [since 5.27] Centivolts
549 * \value [since 5.27] Millivolts
550 * \value [since 5.27] Microvolts
551 * \value [since 5.27] Nanovolts
552 * \value [since 5.27] Picovolts
553 * \value [since 5.27] Femtovolts
554 * \value [since 5.27] Attovolts
555 * \value [since 5.27] Zeptovolts
556 * \value [since 5.27] Yoctovolts
557 * \value [since 5.27] Statvolts
558 * \value [since 5.27] Yottaampere
559 * \value [since 5.27] Zettaampere
560 * \value [since 5.27] Exaampere
561 * \value [since 5.27] Petaampere
562 * \value [since 5.27] Teraampere
563 * \value [since 5.27] Gigaampere
564 * \value [since 5.27] Megaampere
565 * \value [since 5.27] Kiloampere
566 * \value [since 5.27] Hectoampere
567 * \value [since 5.27] Decaampere
568 * \value [since 5.27] Ampere
569 * \value [since 5.27] Deciampere
570 * \value [since 5.27] Centiampere
571 * \value [since 5.27] Milliampere
572 * \value [since 5.27] Microampere
573 * \value [since 5.27] Nanoampere
574 * \value [since 5.27] Picoampere
575 * \value [since 5.27] Femtoampere
576 * \value [since 5.27] Attoampere
577 * \value [since 5.27] Zeptoampere
578 * \value [since 5.27] Yoctoampere
579 * \value [since 5.27] Yottaohms
580 * \value [since 5.27] Zettaohms
581 * \value [since 5.27] Exaohms
582 * \value [since 5.27] Petaohms
583 * \value [since 5.27] Teraohms
584 * \value [since 5.27] Gigaohms
585 * \value [since 5.27] Megaohms
586 * \value [since 5.27] Kiloohms
587 * \value [since 5.27] Hectoohms
588 * \value [since 5.27] Decaohms
589 * \value [since 5.27] Ohms
590 * \value [since 5.27] Deciohms
591 * \value [since 5.27] Centiohms
592 * \value [since 5.27] Milliohms
593 * \value [since 5.27] Microohms
594 * \value [since 5.27] Nanoohms
595 * \value [since 5.27] Picoohms
596 * \value [since 5.27] Femtoohms
597 * \value [since 5.27] Attoohms
598 * \value [since 5.27] Zeptoohms
599 * \value [since 5.27] Yoctoohms
600 *
601 * \value [since 5.53] Darcy
602 * \value [since 5.53] MiliDarcy
603 * \value [since 5.53] PermeabilitySquareMicrometer
604 *
605 * \value [since 5.61] Yobibyte
606 * \value [since 5.61] Yobibit
607 * \value [since 5.61] Yottabyte
608 * \value [since 5.61] Yottabit
609 * \value [since 5.61] Zebibyte
610 * \value [since 5.61] Zebibit
611 * \value [since 5.61] Zettabyte
612 * \value [since 5.61] Zettabit
613 * \value [since 5.61] Exbibyte
614 * \value [since 5.61] Exbibit
615 * \value [since 5.61] Exabyte
616 * \value [since 5.61] Exabit
617 * \value [since 5.61] Pebibyte
618 * \value [since 5.61] Pebibit
619 * \value [since 5.61] Petabyte
620 * \value [since 5.61] Petabit
621 * \value [since 5.61] Tebibyte
622 * \value [since 5.61] Tebibit
623 * \value [since 5.61] Terabyte
624 * \value [since 5.61] Terabit
625 * \value [since 5.61] Gibibyte
626 * \value [since 5.61] Gibibit
627 * \value [since 5.61] Gigabyte
628 * \value [since 5.61] Gigabit
629 * \value [since 5.61] Mebibyte
630 * \value [since 5.61] Mebibit
631 * \value [since 5.61] Megabyte
632 * \value [since 5.61] Megabit
633 * \value [since 5.61] Kibibyte
634 * \value [since 5.61] Kibibit
635 * \value [since 5.61] Kilobyte
636 * \value [since 5.61] Kilobit
637 * \value [since 5.61] Byte
638 * \value [since 5.61] Bit
639 */
640enum UnitId {
641 InvalidUnit = -1,
642 NoUnit = 0,
643 Percent = 1,
644
645 // Area
646 SquareYottameter = 1000,
647 SquareZettameter,
648 SquareExameter,
649 SquarePetameter,
650 SquareTerameter,
651 SquareGigameter,
652 SquareMegameter,
653 SquareKilometer,
654 SquareHectometer,
655 SquareDecameter,
656 SquareMeter,
657 SquareDecimeter,
658 SquareCentimeter,
659 SquareMillimeter,
660 SquareMicrometer,
661 SquareNanometer,
662 SquarePicometer,
663 SquareFemtometer,
664 SquareAttometer,
665 SquareZeptometer,
666 SquareYoctometer,
667 Acre,
668 SquareFoot,
669 SquareInch,
670 SquareMile,
671
672 // Length
673 Yottameter = 2000,
674 Zettameter,
675 Exameter,
676 Petameter,
677 Terameter,
678 Gigameter,
679 Megameter,
680 Kilometer,
681 Hectometer,
682 Decameter,
683 Meter,
684 Decimeter,
685 Centimeter,
686 Millimeter,
687 Micrometer,
688 Nanometer,
689 Picometer,
690 Femtometer,
691 Attometer,
692 Zeptometer,
693 Yoctometer,
694 Inch,
695 Foot,
696 Yard,
697 Mile,
698 NauticalMile,
699 LightYear,
700 Parsec,
701 AstronomicalUnit,
702 Thou,
703 Angstrom,
704 RackUnit,
705 Link,
706 Chain,
707 Furlong,
708 Fathom,
709 RodPerchPole,
710
711 // Volume
712 CubicYottameter = 3000,
713 CubicZettameter,
714 CubicExameter,
715 CubicPetameter,
716 CubicTerameter,
717 CubicGigameter,
718 CubicMegameter,
719 CubicKilometer,
720 CubicHectometer,
721 CubicDecameter,
722 CubicMeter,
723 CubicDecimeter,
724 CubicCentimeter,
725 CubicMillimeter,
726 CubicMicrometer,
727 CubicNanometer,
728 CubicPicometer,
729 CubicFemtometer,
730 CubicAttometer,
731 CubicZeptometer,
732 CubicYoctometer,
733 Yottaliter,
734 Zettaliter,
735 Exaliter,
736 Petaliter,
737 Teraliter,
738 Gigaliter,
739 Megaliter,
740 Kiloliter,
741 Hectoliter,
742 Decaliter,
743 Liter,
744 Deciliter,
745 Centiliter,
746 Milliliter,
747 Microliter,
748 Nanoliter,
749 Picoliter,
750 Femtoliter,
751 Attoliter,
752 Zeptoliter,
753 Yoctoliter,
754 CubicFoot,
755 CubicInch,
756 CubicMile,
757 FluidOunce,
758 Cup,
759 Teaspoon,
760 Tablespoon,
761 GallonUS,
762 PintImperial,
763 OilBarrel,
764 GallonImperial,
765 PintUS,
766
767 // Mass
768 Yottagram = 4000,
769 Zettagram,
770 Exagram,
771 Petagram,
772 Teragram,
773 Gigagram,
774 Megagram,
775 Kilogram,
776 Hectogram,
777 Decagram,
778 Gram,
779 Decigram,
780 Centigram,
781 Milligram,
782 Microgram,
783 Nanogram,
784 Picogram,
785 Femtogram,
786 Attogram,
787 Zeptogram,
788 Yoctogram,
789 Ton,
790 Carat,
791 Pound,
792 Ounce,
793 TroyOunce,
794 MassNewton,
795 Kilonewton,
796
797 Stone,
798
799 // Pressure
800 Yottapascal = 5000,
801 Zettapascal,
802 Exapascal,
803 Petapascal,
804 Terapascal,
805 Gigapascal,
806 Megapascal,
807 Kilopascal,
808 Hectopascal,
809 Decapascal,
810 Pascal,
811 Decipascal,
812 Centipascal,
813 Millipascal,
814 Micropascal,
815 Nanopascal,
816 Picopascal,
817 Femtopascal,
818 Attopascal,
819 Zeptopascal,
820 Yoctopascal,
821 Bar,
822 Millibar,
823 Decibar,
824 Torr,
825 TechnicalAtmosphere,
826 Atmosphere,
827 PoundForcePerSquareInch,
828 InchesOfMercury,
829 MillimetersOfMercury,
830
831 // Temperature
832 Kelvin = 6000,
833 Celsius,
834 Fahrenheit,
835 Rankine,
836 Delisle,
837 TemperatureNewton,
838 Reaumur,
839 Romer,
840
841 // Energy
842 Yottajoule = 7000,
843 Zettajoule,
844 Exajoule,
845 Petajoule,
846 Terajoule,
847 Gigajoule,
848 Megajoule,
849 Kilojoule,
850 Hectojoule,
851 Decajoule,
852 Joule,
853 Decijoule,
854 Centijoule,
855 Millijoule,
856 Microjoule,
857 Nanojoule,
858 Picojoule,
859 Femtojoule,
860 Attojoule,
861 Zeptojoule,
862 Yoctojoule,
863 GuidelineDailyAmount,
864 Electronvolt,
865 Rydberg,
866 Kilocalorie,
867 PhotonWavelength,
868 KiloJoulePerMole,
869 JoulePerMole,
870 Btu,
871 Erg,
872
873 // Currency
874 Eur = 8000,
875 Ats,
876 Bef,
877 Nlg,
878 Fim,
879 Frf,
880 Dem,
881 Iep,
882 Itl,
883 Luf,
884 Pte,
885 Esp,
886 Grd,
887 Sit,
888 Cyp,
889 Mtl,
890 Skk,
891 Usd,
892 Jpy,
893 Bgn,
894 Czk,
895 Dkk,
896 Eek,
897 Gbp,
898 Huf,
899 Ltl,
900 Lvl,
901 Pln,
902 Ron,
903 Sek,
904 Chf,
905 Nok,
906 Hrk,
907 Rub,
908 Try,
909 Aud,
910 Brl,
911 Cad,
912 Cny,
913 Hkd,
914 Idr,
915 Inr,
916 Krw,
917 Mxn,
918 Myr,
919 Nzd,
920 Php,
921 Sgd,
922 Thb,
923 Zar,
924 Ils,
925 Isk,
926 Xpf, /// @since 6.9
927
928 // Velocity
929 MeterPerSecond = 9000,
930 KilometerPerHour,
931 MilePerHour,
932 FootPerSecond,
933 InchPerSecond,
934 Knot,
935 Mach,
936 SpeedOfLight,
937 Beaufort,
938
939 // Power
940 Yottawatt = 10000,
941 Zettawatt,
942 Exawatt,
943 Petawatt,
944 Terawatt,
945 Gigawatt,
946 Megawatt,
947 Kilowatt,
948 Hectowatt,
949 Decawatt,
950 Watt,
951 Deciwatt,
952 Centiwatt,
953 Milliwatt,
954 Microwatt,
955 Nanowatt,
956 Picowatt,
957 Femtowatt,
958 Attowatt,
959 Zeptowatt,
960 Yoctowatt,
961 Horsepower,
962 DecibelKilowatt,
963 DecibelWatt,
964 DecibelMilliwatt,
965 DecibelMicrowatt,
966
967 // Time
968 Yottasecond = 11000,
969 Zettasecond,
970 Exasecond,
971 Petasecond,
972 Terasecond,
973 Gigasecond,
974 Megasecond,
975 Kilosecond,
976 Hectosecond,
977 Decasecond,
978 Second,
979 Decisecond,
980 Centisecond,
981 Millisecond,
982 Microsecond,
983 Nanosecond,
984 Picosecond,
985 Femtosecond,
986 Attosecond,
987 Zeptosecond,
988 Yoctosecond,
989 Minute,
990 Hour,
991 Day,
992 Week,
993 JulianYear,
994 LeapYear,
995 Year,
996
997 // FuelEfficiency
998 LitersPer100Kilometers = 12000,
999 MilePerUsGallon,
1000 MilePerImperialGallon,
1001 KilometrePerLitre,
1002
1003 // Density
1004 YottakilogramsPerCubicMeter = 13000,
1005 ZettakilogramPerCubicMeter,
1006 ExakilogramPerCubicMeter,
1007 PetakilogramPerCubicMeter,
1008 TerakilogramPerCubicMeter,
1009 GigakilogramPerCubicMeter,
1010 MegakilogramPerCubicMeter,
1011 KilokilogramPerCubicMeter,
1012 HectokilogramsPerCubicMeter,
1013 DecakilogramsPerCubicMeter,
1014 KilogramsPerCubicMeter,
1015 DecikilogramsPerCubicMeter,
1016 CentikilogramsPerCubicMeter,
1017 MillikilogramsPerCubicMeter,
1018 MicrokilogramsPerCubicMeter,
1019 NanokilogramsPerCubicMeter,
1020 PicokilogramsPerCubicMeter,
1021 FemtokilogramsPerCubicMeter,
1022 AttokilogramsPerCubicMeter,
1023 ZeptokilogramsPerCubicMeter,
1024 YoctokilogramsPerCubicMeter,
1025 KilogramPerLiter,
1026 GramPerLiter,
1027 GramPerMilliliter,
1028 OuncePerCubicInch,
1029 OuncePerCubicFoot,
1030 OuncePerCubicYard,
1031 PoundPerCubicInch,
1032 PoundPerCubicFoot,
1033 PoundPerCubicYard,
1034
1035 // Weight per area
1036 GramsPerSquareMeter,
1037 OuncesPerSquareYard,
1038
1039 // Acceleration
1040 MetresPerSecondSquared = 14000,
1041 FeetPerSecondSquared,
1042 StandardGravity,
1043
1044 // Force
1045 Yottanewton = 15000,
1046 Zettanewton,
1047 Exanewton,
1048 Petanewton,
1049 Teranewton,
1050 Giganewton,
1051 Meganewton,
1052 KilonewtonForce,
1053 Hectonewton,
1054 Decanewton,
1055 Newton,
1056 Decinewton,
1057 Centinewton,
1058 Millinewton,
1059 Micronewton,
1060 Nanonewton,
1061 Piconewton,
1062 Femtonewton,
1063 Attonewton,
1064 Zeptonewton,
1065 Yoctonewton,
1066 Dyne,
1067 Kilopond,
1068 PoundForce,
1069 Poundal,
1070
1071 // Angle
1072 Degree = 16000,
1073 Radian,
1074 Gradian,
1075 ArcMinute,
1076 ArcSecond,
1077
1078 // Frequency
1079 Yottahertz = 17000,
1080 Zettahertz,
1081 Exahertz,
1082 Petahertz,
1083 Terahertz,
1084 Gigahertz,
1085 Megahertz,
1086 Kilohertz,
1087 Hectohertz,
1088 Decahertz,
1089 Hertz,
1090 Decihertz,
1091 Centihertz,
1092 Millihertz,
1093 Microhertz,
1094 Nanohertz,
1095 Picohertz,
1096 Femtohertz,
1097 Attohertz,
1098 Zeptohertz,
1099 Yoctohertz,
1100 RPM,
1101
1102 // Thermal Conductivity
1103 WattPerMeterKelvin = 18000,
1104 BtuPerFootHourFahrenheit,
1105 BtuPerSquareFootHourFahrenheitPerInch,
1106
1107 // Thermal Flux Density
1108 WattPerSquareMeter = 19000,
1109 BtuPerHourPerSquareFoot,
1110
1111 // Thermal Generation per volume
1112 WattPerCubicMeter = 20000,
1113 BtuPerHourPerCubicFoot,
1114
1115 // Voltage
1116 Yottavolts = 30000,
1117 Zettavolts,
1118 Exavolts,
1119 Petavolts,
1120 Teravolts,
1121 Gigavolts,
1122 Megavolts,
1123 Kilovolts,
1124 Hectovolts,
1125 Decavolts,
1126 Volts,
1127 Decivolts,
1128 Centivolts,
1129 Millivolts,
1130 Microvolts,
1131 Nanovolts,
1132 Picovolts,
1133 Femtovolts,
1134 Attovolts,
1135 Zeptovolts,
1136 Yoctovolts,
1137 Statvolts,
1138
1139 // Electrical Current
1140 Yottaampere = 31000,
1141 Zettaampere,
1142 Exaampere,
1143 Petaampere,
1144 Teraampere,
1145 Gigaampere,
1146 Megaampere,
1147 Kiloampere,
1148 Hectoampere,
1149 Decaampere,
1150 Ampere,
1151 Deciampere,
1152 Centiampere,
1153 Milliampere,
1154 Microampere,
1155 Nanoampere,
1156 Picoampere,
1157 Femtoampere,
1158 Attoampere,
1159 Zeptoampere,
1160 Yoctoampere,
1161
1162 // Electrical Resistance
1163 Yottaohms = 32000,
1164 Zettaohms,
1165 Exaohms,
1166 Petaohms,
1167 Teraohms,
1168 Gigaohms,
1169 Megaohms,
1170 Kiloohms,
1171 Hectoohms,
1172 Decaohms,
1173 Ohms,
1174 Deciohms,
1175 Centiohms,
1176 Milliohms,
1177 Microohms,
1178 Nanoohms,
1179 Picoohms,
1180 Femtoohms,
1181 Attoohms,
1182 Zeptoohms,
1183 Yoctoohms,
1184
1185 Darcy = 33000,
1186 MiliDarcy,
1187 PermeabilitySquareMicrometer,
1188
1189 Yobibyte = 34000,
1190 Yobibit,
1191 Yottabyte,
1192 Yottabit,
1193 Zebibyte,
1194 Zebibit,
1195 Zettabyte,
1196 Zettabit,
1197 Exbibyte,
1198 Exbibit,
1199 Exabyte,
1200 Exabit,
1201 Pebibyte,
1202 Pebibit,
1203 Petabyte,
1204 Petabit,
1205 Tebibyte,
1206 Tebibit,
1207 Terabyte,
1208 Terabit,
1209 Gibibyte,
1210 Gibibit,
1211 Gigabyte,
1212 Gigabit,
1213 Mebibyte,
1214 Mebibit,
1215 Megabyte,
1216 Megabit,
1217 Kibibyte,
1218 Kibibit,
1219 Kilobyte,
1220 Kilobit,
1221 Byte,
1222 Bit
1223};
1224
1225class UnitCategory;
1226class UnitPrivate;
1227
1228/*!
1229 * \class KUnitConversion::Unit
1230 * \inmodule KUnitConversion
1231 *
1232 * \brief Class to define a unit of measurement.
1233 *
1234 * This is a class to define a unit of measurement.
1235 *
1236 * \sa Converter, UnitCategory, Value
1237 *
1238 */
1239
1240class KUNITCONVERSION_EXPORT Unit
1241{
1242public:
1243 /*!
1244 * Null constructor
1245 **/
1246 Unit();
1247
1248 Unit(const Unit &other);
1249
1250 ~Unit();
1251
1252 Unit &operator=(const Unit &other);
1253
1254 Unit &operator=(Unit &&other);
1255
1256 /*!
1257 * Returns true if this Unit is equal to the \a other Unit.
1258 **/
1259 bool operator==(const Unit &other) const;
1260
1261 bool operator!=(const Unit &other) const;
1262
1263 /*!
1264 * Returns returns true if this Unit is null
1265 **/
1266 bool isNull() const;
1267
1268 /*!
1269 * Returns if unit is valid.
1270 **/
1271 bool isValid() const;
1272
1273 /*!
1274 * Returns unit id.
1275 **/
1276 UnitId id() const;
1277
1278 /*!
1279 * Returns category id.
1280 **/
1281 CategoryId categoryId() const;
1282
1283 /*!
1284 * Returns unit category.
1285 **/
1286 UnitCategory category() const;
1287
1288 /*!
1289 * Returns translated name for unit.
1290 **/
1291 QString description() const;
1292
1293 /*!
1294 * Returns symbol for the unit.
1295 **/
1296 QString symbol() const;
1297
1298 /*!
1299 * \a value number value
1300 *
1301 * \a fieldWidth width of the formatted field, padded by spaces.
1302 * Positive value aligns right, negative aligns left
1303 *
1304 * \a format type of floating point formatting, like in \l QString::arg
1305 *
1306 * \a precision number of digits after the decimal separator
1307 *
1308 * \a fillChar the character used to fill up the empty places when
1309 * field width is greater than argument width
1310 *
1311 * Returns value + unit string
1312 **/
1313 QString toString(qreal value, int fieldWidth = 0, char format = 'g', int precision = -1, const QChar &fillChar = QLatin1Char(' ')) const;
1314
1315 /*!
1316 * \a value number value
1317 *
1318 * \a fieldWidth width of the formatted field, padded by spaces.
1319 * Positive value aligns right, negative aligns left
1320 *
1321 * \a format type of floating point formatting, like in \l QString::arg
1322 *
1323 * \a precision number of digits after the decimal separator
1324 *
1325 * \a fillChar the character used to fill up the empty places when
1326 * field width is greater than argument width
1327 *
1328 * Returns value + unit string
1329 **/
1330 QString toSymbolString(qreal value, int fieldWidth = 0, char format = 'g', int precision = -1, const QChar &fillChar = QLatin1Char(' ')) const;
1331
1332protected:
1333 qreal toDefault(qreal value) const;
1334 qreal fromDefault(qreal value) const;
1335
1336private:
1337 friend class UnitPrivate;
1338 friend class UnitCategory;
1339 friend class UnitCategoryPrivate;
1340 friend class CurrencyCategoryPrivate;
1341
1342 KUNITCONVERSION_NO_EXPORT explicit Unit(UnitPrivate *dd);
1343
1344 KUNITCONVERSION_NO_EXPORT void setUnitMultiplier(qreal multiplier);
1345
1346 QExplicitlySharedDataPointer<UnitPrivate> d;
1347};
1348
1349} // KUnitConversion namespace
1350
1351Q_DECLARE_TYPEINFO(KUnitConversion::Unit, Q_RELOCATABLE_TYPE);
1352
1353#endif
1354

source code of kunitconversion/src/unit.h