merged AI doc, some new pages
This commit is contained in:
@@ -1,9 +1,14 @@
|
||||
/*! \file piunits.h
|
||||
* \ingroup Core
|
||||
* \~\brief
|
||||
* \~english Unit conversions
|
||||
* \~russian Преобразование единиц измерения
|
||||
*/
|
||||
//! \~\file piunits.h
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Umbrella header for the public unit conversion API
|
||||
//! \~russian Главный заголовок публичного API преобразования единиц измерения
|
||||
//!
|
||||
//! \~\details
|
||||
//! \~english
|
||||
//! Includes all registered public unit families together with %PIUnits::Value.
|
||||
//! \~russian
|
||||
//! Включает все зарегистрированные публичные семейства единиц вместе с %PIUnits::Value.
|
||||
/*
|
||||
PIP - Platform Independent Primitives
|
||||
Unit conversions
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
/*! \file piunits_base.h
|
||||
* \ingroup Core
|
||||
* \~\brief
|
||||
* \~english Unit conversions
|
||||
* \~russian Преобразование единиц измерения
|
||||
*/
|
||||
//! \~\file piunits_base.h
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Shared unit conversion infrastructure
|
||||
//! \~russian Общая инфраструктура преобразования единиц измерения
|
||||
/*
|
||||
PIP - Platform Independent Primitives
|
||||
Unit conversions
|
||||
@@ -23,11 +22,48 @@
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
//! \~english Units base classes
|
||||
//! \~russian Базовые классы единиц измерения
|
||||
//! \defgroup Units Units
|
||||
//! \~\brief
|
||||
//! \~english Unit conversions
|
||||
//! \~russian Преобразование единиц измерения
|
||||
//!
|
||||
//! \~\details
|
||||
//! \~english \section cmake_module_Units Building with CMake
|
||||
//! \~russian \section cmake_module_Units Сборка с использованием CMake
|
||||
//!
|
||||
//! \~\code
|
||||
//! find_package(PIP REQUIRED)
|
||||
//! target_link_libraries([target] PIP)
|
||||
//! \endcode
|
||||
//!
|
||||
//! \~english \par Common
|
||||
//! \~russian \par Общее
|
||||
//!
|
||||
//! \~english
|
||||
//! These files provides unit conversion framework.
|
||||
//!
|
||||
//! \~russian
|
||||
//! Эти файлы обеспечивают фреймворк преобразования единиц.
|
||||
//!
|
||||
//! \~\authors
|
||||
//! \~english
|
||||
//! Ivan Pelipenko peri4ko@yandex.ru;
|
||||
//! \~russian
|
||||
//! Иван Пелипенко peri4ko@yandex.ru;
|
||||
//!
|
||||
|
||||
#ifndef PIUNITS_BASE_H
|
||||
#define PIUNITS_BASE_H
|
||||
|
||||
#include "pitranslator.h"
|
||||
|
||||
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Starts declaration of a unit family class in namespace %PIUnits::Class.
|
||||
//! \~russian Начинает объявление класса семейства единиц в пространстве имен %PIUnits::Class.
|
||||
#define DECLARE_UNIT_CLASS_BEGIN(Name, StartIndex) \
|
||||
namespace PIUnits { \
|
||||
namespace Class { \
|
||||
@@ -47,15 +83,17 @@
|
||||
bool supportPrefixesSmaller(int type) const override; \
|
||||
\
|
||||
public: \
|
||||
PIString className() const override { \
|
||||
return piTr(#Name, "PIUnits"); \
|
||||
} \
|
||||
PIString className() const override { return piTr(#Name, "PIUnits"); } \
|
||||
uint classID() const override { \
|
||||
static uint ret = PIStringAscii(#Name).hash(); \
|
||||
return ret; \
|
||||
}
|
||||
|
||||
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Completes unit family class declaration and registers it globally.
|
||||
//! \~russian Завершает объявление класса семейства единиц и регистрирует его глобально.
|
||||
#define DECLARE_UNIT_CLASS_END(Name) \
|
||||
} \
|
||||
; \
|
||||
@@ -65,40 +103,110 @@
|
||||
PIUnits::Class::Name::registerSelf(); \
|
||||
STATIC_INITIALIZER_END
|
||||
|
||||
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Namespace containing unit metadata and conversion helpers.
|
||||
//! \~russian Пространство имен с метаданными и вспомогательными средствами преобразования единиц.
|
||||
namespace PIUnits {
|
||||
|
||||
//! \~\ingroup Units
|
||||
//! \~english Returns unit family name for type identifier "type".
|
||||
//! \~russian Возвращает имя семейства единиц для идентификатора типа "type".
|
||||
PIP_EXPORT PIString className(int type);
|
||||
|
||||
//! \~\ingroup Units
|
||||
//! \~english Returns localized unit name for type identifier "type".
|
||||
//! \~russian Возвращает локализованное имя единицы для идентификатора типа "type".
|
||||
PIP_EXPORT PIString name(int type);
|
||||
|
||||
//! \~\ingroup Units
|
||||
//! \~english Returns localized unit symbol for type identifier "type".
|
||||
//! \~russian Возвращает локализованное обозначение единицы для идентификатора типа "type".
|
||||
PIP_EXPORT PIString unit(int type);
|
||||
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Namespace containing unit family descriptors.
|
||||
//! \~russian Пространство имен с описателями семейств единиц.
|
||||
namespace Class {
|
||||
|
||||
//! \~\ingroup Units
|
||||
//! \~english Common invalid unit type value.
|
||||
//! \~russian Общее значение недопустимого типа единицы.
|
||||
enum {
|
||||
Invalid = -1
|
||||
Invalid = -1 /** \~english Invalid unit type \~russian Недопустимый тип единицы */
|
||||
};
|
||||
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Internal registry and base interfaces for unit families.
|
||||
//! \~russian Внутренний реестр и базовые интерфейсы для семейств единиц.
|
||||
class PIP_EXPORT Internal {
|
||||
public:
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Base interface implemented by every unit family descriptor.
|
||||
//! \~russian Базовый интерфейс, реализуемый каждым описателем семейства единиц.
|
||||
class PIP_EXPORT ClassBase {
|
||||
public:
|
||||
//! \~english Returns stable identifier of the unit family.
|
||||
//! \~russian Возвращает стабильный идентификатор семейства единиц.
|
||||
virtual uint classID() const = 0;
|
||||
|
||||
//! \~english Returns localized family name.
|
||||
//! \~russian Возвращает локализованное имя семейства.
|
||||
virtual PIString className() const = 0;
|
||||
|
||||
//! \~english Returns localized name of unit type "type".
|
||||
//! \~russian Возвращает локализованное имя типа единицы "type".
|
||||
virtual PIString name(int type) const = 0;
|
||||
|
||||
//! \~english Returns localized symbol of unit type "type".
|
||||
//! \~russian Возвращает локализованное обозначение типа единицы "type".
|
||||
virtual PIString unit(int type) const = 0;
|
||||
|
||||
//! \~english Formats numeric value "v" without unit symbol.
|
||||
//! \~russian Форматирует числовое значение "v" без обозначения единицы.
|
||||
virtual PIString valueToString(double v, char format = 'g', int prec = 5) const = 0;
|
||||
|
||||
//! \~english Converts numeric value "v" from unit "from" to unit "to".
|
||||
//! \~russian Преобразует числовое значение "v" из единицы "from" в единицу "to".
|
||||
virtual double convert(double v, int from, int to) const = 0;
|
||||
|
||||
//! \~english Returns whether unit type "type" supports automatic SI prefixes.
|
||||
//! \~russian Возвращает, поддерживает ли тип единицы "type" автоматические SI-префиксы.
|
||||
virtual bool supportPrefixes(int type) const { return true; }
|
||||
|
||||
//! \~english Returns whether non-multiple-of-three prefixes are allowed for unit type "type".
|
||||
//! \~russian Возвращает, разрешены ли немножественные трем префиксы для типа единицы "type".
|
||||
virtual bool supportPrefixesNon3(int type) const { return false; }
|
||||
|
||||
//! \~english Returns whether prefixes larger than the base unit are allowed for type "type".
|
||||
//! \~russian Возвращает, разрешены ли префиксы больше базовой единицы для типа "type".
|
||||
virtual bool supportPrefixesGreater(int type) const { return true; }
|
||||
|
||||
//! \~english Returns whether prefixes smaller than the base unit are allowed for type "type".
|
||||
//! \~russian Возвращает, разрешены ли префиксы меньше базовой единицы для типа "type".
|
||||
virtual bool supportPrefixesSmaller(int type) const { return true; }
|
||||
|
||||
//! \~english Returns all registered unit type identifiers of this family.
|
||||
//! \~russian Возвращает все зарегистрированные идентификаторы типов этой семьи единиц.
|
||||
const PIVector<int> & allTypes() const { return types; }
|
||||
|
||||
protected:
|
||||
PIVector<int> types;
|
||||
};
|
||||
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Helper that registers every type declared by unit family "P".
|
||||
//! \~russian Вспомогательный класс, регистрирующий все типы, объявленные семейством единиц "P".
|
||||
template<typename P>
|
||||
class Registrator {
|
||||
public:
|
||||
//! \~english Registers unit family "P" in shared lookup tables.
|
||||
//! \~russian Регистрирует семейство единиц "P" в общих таблицах поиска.
|
||||
static void registerSelf() {
|
||||
auto * uc = new P();
|
||||
for (int t = P::typeStart; t < P::_LastType; ++t) {
|
||||
@@ -108,14 +216,26 @@ public:
|
||||
if (!Internal::allTypeClasses.contains(uc)) Internal::allTypeClasses << uc;
|
||||
}
|
||||
};
|
||||
|
||||
//! \~english Maps unit type identifiers to owning family descriptors.
|
||||
//! \~russian Сопоставляет идентификаторы типов единиц с описателями их семейств.
|
||||
static PIMap<int, ClassBase *> typeClasses;
|
||||
|
||||
//! \~english Stores all registered unit family descriptors.
|
||||
//! \~russian Хранит все зарегистрированные описатели семейств единиц.
|
||||
static PIVector<ClassBase *> allTypeClasses;
|
||||
|
||||
//! \~english Fallback string for unknown unit types.
|
||||
//! \~russian Строка-заглушка для неизвестных типов единиц.
|
||||
static const PIString unknown;
|
||||
};
|
||||
|
||||
|
||||
} // namespace Class
|
||||
|
||||
//! \~\ingroup Units
|
||||
//! \~english Returns all registered unit family descriptors.
|
||||
//! \~russian Возвращает все зарегистрированные описатели семейств единиц.
|
||||
PIP_EXPORT PIVector<Class::Internal::ClassBase *> allClasses();
|
||||
|
||||
} // namespace PIUnits
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
/*! \file piunits_class_angle.h
|
||||
* \ingroup Core
|
||||
* \~\brief
|
||||
* \~english Angle units
|
||||
* \~russian Единицы измерения угла
|
||||
*/
|
||||
//! \~\file piunits_class_angle.h
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Angle unit family descriptor
|
||||
//! \~russian Описатель семейства единиц угла
|
||||
//!
|
||||
//! \~\details
|
||||
//! \~english
|
||||
//! Declares %PIUnits::Class::Angle and its public type identifiers for angle conversions.
|
||||
//! \~russian
|
||||
//! Объявляет %PIUnits::Class::Angle и его публичные идентификаторы типов для преобразования углов.
|
||||
/*
|
||||
PIP - Platform Independent Primitives
|
||||
Angle units
|
||||
@@ -28,11 +33,18 @@
|
||||
|
||||
#include "piunits_base.h"
|
||||
|
||||
//! \class PIUnits::Class::Angle
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Descriptor of angle units and their public type identifiers.
|
||||
//! \~russian Описатель единиц угла и их публичных идентификаторов типов.
|
||||
DECLARE_UNIT_CLASS_BEGIN(Angle, 0x200)
|
||||
//! \~english Supported angle unit type identifiers.
|
||||
//! \~russian Поддерживаемые идентификаторы типов единиц угла.
|
||||
enum {
|
||||
Degree = typeStart,
|
||||
Radian,
|
||||
_LastType,
|
||||
Degree = typeStart /** \~english Degree \~russian Градус */,
|
||||
Radian /** \~english Radian \~russian Радиан */,
|
||||
_LastType
|
||||
};
|
||||
DECLARE_UNIT_CLASS_END(Angle)
|
||||
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
/*! \file piunits_class_distance.h
|
||||
* \ingroup Core
|
||||
* \~\brief
|
||||
* \~english Distance units
|
||||
* \~russian Единицы измерения расстояния
|
||||
*/
|
||||
//! \~\file piunits_class_distance.h
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Distance unit family descriptor
|
||||
//! \~russian Описатель семейства единиц расстояния
|
||||
//!
|
||||
//! \~\details
|
||||
//! \~english
|
||||
//! Declares %PIUnits::Class::Distance and its public type identifiers for distance conversions.
|
||||
//! \~russian
|
||||
//! Объявляет %PIUnits::Class::Distance и его публичные идентификаторы типов для преобразования расстояний.
|
||||
/*
|
||||
PIP - Platform Independent Primitives
|
||||
Distance units
|
||||
@@ -28,18 +33,25 @@
|
||||
|
||||
#include "piunits_base.h"
|
||||
|
||||
//! \class PIUnits::Class::Distance
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Descriptor of distance units and their public type identifiers.
|
||||
//! \~russian Описатель единиц расстояния и их публичных идентификаторов типов.
|
||||
DECLARE_UNIT_CLASS_BEGIN(Distance, 0x600)
|
||||
//! \~english Supported distance unit type identifiers.
|
||||
//! \~russian Поддерживаемые идентификаторы типов единиц расстояния.
|
||||
enum {
|
||||
Meter = typeStart,
|
||||
Inch,
|
||||
Mil,
|
||||
Foot,
|
||||
Yard,
|
||||
Meter = typeStart /** \~english Meter \~russian Метр */,
|
||||
Inch /** \~english Inch \~russian Дюйм */,
|
||||
Mil /** \~english Mil or thou \~russian Мил или thou */,
|
||||
Foot /** \~english Foot \~russian Фут */,
|
||||
Yard /** \~english Yard \~russian Ярд */,
|
||||
|
||||
Angstrom,
|
||||
AstronomicalUnit,
|
||||
Angstrom /** \~english Angstrom \~russian Ангстрем */,
|
||||
AstronomicalUnit /** \~english Astronomical unit \~russian Астрономическая единица */,
|
||||
|
||||
_LastType,
|
||||
_LastType
|
||||
};
|
||||
DECLARE_UNIT_CLASS_END(Distance)
|
||||
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
/*! \file piunits_class_information.h
|
||||
* \ingroup Core
|
||||
* \~\brief
|
||||
* \~english Information units
|
||||
* \~russian Единицы измерения информации
|
||||
*/
|
||||
//! \~\file piunits_class_information.h
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Information unit family descriptor
|
||||
//! \~russian Описатель семейства единиц информации
|
||||
//!
|
||||
//! \~\details
|
||||
//! \~english
|
||||
//! Declares %PIUnits::Class::Information and its public type identifiers for information values.
|
||||
//! \~russian
|
||||
//! Объявляет %PIUnits::Class::Information и его публичные идентификаторы типов для значений информации.
|
||||
/*
|
||||
PIP - Platform Independent Primitives
|
||||
Information units
|
||||
@@ -28,11 +33,18 @@
|
||||
|
||||
#include "piunits_base.h"
|
||||
|
||||
//! \class PIUnits::Class::Information
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Descriptor of information units and their public type identifiers.
|
||||
//! \~russian Описатель единиц информации и их публичных идентификаторов типов.
|
||||
DECLARE_UNIT_CLASS_BEGIN(Information, 0x100)
|
||||
//! \~english Supported information unit type identifiers.
|
||||
//! \~russian Поддерживаемые идентификаторы типов единиц информации.
|
||||
enum {
|
||||
Bit = typeStart,
|
||||
Byte,
|
||||
_LastType,
|
||||
Bit = typeStart, /** \~english Bit \~russian Бит */
|
||||
Byte, /** \~english Byte \~russian Байт */
|
||||
_LastType, /** \~english Sentinel after the last unit type \~russian Служебное значение после последнего типа */
|
||||
};
|
||||
DECLARE_UNIT_CLASS_END(Information)
|
||||
|
||||
|
||||
@@ -1,12 +1,17 @@
|
||||
/*! \file piunits_class_distance.h
|
||||
* \ingroup Core
|
||||
* \~\brief
|
||||
* \~english Mass units
|
||||
* \~russian Единицы измерения массы
|
||||
*/
|
||||
//! \~\file piunits_class_mass.h
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Mass unit family descriptor
|
||||
//! \~russian Описатель семейства единиц массы
|
||||
//!
|
||||
//! \~\details
|
||||
//! \~english
|
||||
//! Declares %PIUnits::Class::Mass and its public type identifiers for mass conversions.
|
||||
//! \~russian
|
||||
//! Объявляет %PIUnits::Class::Mass и его публичные идентификаторы типов для преобразования массы.
|
||||
/*
|
||||
PIP - Platform Independent Primitives
|
||||
Mass units
|
||||
Mass units
|
||||
Ivan Pelipenko peri4ko@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
@@ -28,12 +33,19 @@
|
||||
|
||||
#include "piunits_base.h"
|
||||
|
||||
//! \class PIUnits::Class::Mass
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Descriptor of mass units and their public type identifiers.
|
||||
//! \~russian Описатель единиц массы и их публичных идентификаторов типов.
|
||||
DECLARE_UNIT_CLASS_BEGIN(Mass, 0x700)
|
||||
//! \~english Supported mass unit type identifiers.
|
||||
//! \~russian Поддерживаемые идентификаторы типов единиц массы.
|
||||
enum {
|
||||
Gram = typeStart,
|
||||
Pound,
|
||||
Ounce,
|
||||
_LastType,
|
||||
Gram = typeStart /** \~english Gram \~russian Грамм */,
|
||||
Pound /** \~english Pound \~russian Фунт */,
|
||||
Ounce /** \~english Ounce \~russian Унция */,
|
||||
_LastType
|
||||
};
|
||||
DECLARE_UNIT_CLASS_END(Mass)
|
||||
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
/*! \file piunits_class_pressure.h
|
||||
* \ingroup Core
|
||||
* \~\brief
|
||||
* \~english Pressure units
|
||||
* \~russian Единицы измерения давления
|
||||
*/
|
||||
//! \~\file piunits_class_pressure.h
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Pressure unit family descriptor
|
||||
//! \~russian Описатель семейства единиц давления
|
||||
//!
|
||||
//! \~\details
|
||||
//! \~english
|
||||
//! Declares %PIUnits::Class::Pressure and its public type identifiers for pressure conversions.
|
||||
//! \~russian
|
||||
//! Объявляет %PIUnits::Class::Pressure и его публичные идентификаторы типов для преобразования давления.
|
||||
/*
|
||||
PIP - Platform Independent Primitives
|
||||
Pressure units
|
||||
@@ -28,13 +33,20 @@
|
||||
|
||||
#include "piunits_base.h"
|
||||
|
||||
//! \class PIUnits::Class::Pressure
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Descriptor of pressure units and their public type identifiers.
|
||||
//! \~russian Описатель единиц давления и их публичных идентификаторов типов.
|
||||
DECLARE_UNIT_CLASS_BEGIN(Pressure, 0x500)
|
||||
//! \~english Supported pressure unit type identifiers.
|
||||
//! \~russian Поддерживаемые идентификаторы типов единиц давления.
|
||||
enum {
|
||||
Pascal = typeStart,
|
||||
Atmosphere,
|
||||
Bar,
|
||||
MillimetreOfMercury,
|
||||
_LastType,
|
||||
Pascal = typeStart /** \~english Pascal \~russian Паскаль */,
|
||||
Atmosphere /** \~english Standard atmosphere \~russian Стандартная атмосфера */,
|
||||
Bar /** \~english Bar \~russian Бар */,
|
||||
MillimetreOfMercury /** \~english Millimetre of mercury \~russian Миллиметр ртутного столба */,
|
||||
_LastType
|
||||
};
|
||||
DECLARE_UNIT_CLASS_END(Pressure)
|
||||
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
/*! \file piunits_class_temperature.h
|
||||
* \ingroup Core
|
||||
* \~\brief
|
||||
* \~english Temperature units
|
||||
* \~russian Единицы измерения температуры
|
||||
*/
|
||||
//! \~\file piunits_class_temperature.h
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Temperature unit family descriptor
|
||||
//! \~russian Описатель семейства единиц температуры
|
||||
//!
|
||||
//! \~\details
|
||||
//! \~english
|
||||
//! Declares %PIUnits::Class::Temperature and its public type identifiers for temperature conversions.
|
||||
//! \~russian
|
||||
//! Объявляет %PIUnits::Class::Temperature и его публичные идентификаторы типов для преобразования температуры.
|
||||
/*
|
||||
PIP - Platform Independent Primitives
|
||||
Temperature units
|
||||
@@ -28,12 +33,19 @@
|
||||
|
||||
#include "piunits_base.h"
|
||||
|
||||
//! \class PIUnits::Class::Temperature
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Descriptor of temperature units and their public type identifiers.
|
||||
//! \~russian Описатель единиц температуры и их публичных идентификаторов типов.
|
||||
DECLARE_UNIT_CLASS_BEGIN(Temperature, 0x400)
|
||||
//! \~english Supported temperature unit type identifiers.
|
||||
//! \~russian Поддерживаемые идентификаторы типов единиц температуры.
|
||||
enum {
|
||||
Kelvin = typeStart,
|
||||
Celsius,
|
||||
Fahrenheit,
|
||||
_LastType,
|
||||
Kelvin = typeStart /** \~english Kelvin \~russian Кельвин */,
|
||||
Celsius /** \~english Celsius \~russian Цельсий */,
|
||||
Fahrenheit /** \~english Fahrenheit \~russian Фаренгейт */,
|
||||
_LastType
|
||||
};
|
||||
DECLARE_UNIT_CLASS_END(Temperature)
|
||||
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
/*! \file piunits_class_time.h
|
||||
* \ingroup Core
|
||||
* \~\brief
|
||||
* \~english Time units
|
||||
* \~russian Единицы измерения времени
|
||||
*/
|
||||
//! \~\file piunits_class_time.h
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Time and frequency unit family descriptor
|
||||
//! \~russian Описатель семейства единиц времени и частоты
|
||||
//!
|
||||
//! \~\details
|
||||
//! \~english
|
||||
//! Declares %PIUnits::Class::Time and its public type identifiers for time and frequency conversions.
|
||||
//! \~russian
|
||||
//! Объявляет %PIUnits::Class::Time и его публичные идентификаторы типов для преобразования времени и частоты.
|
||||
/*
|
||||
PIP - Platform Independent Primitives
|
||||
Time units
|
||||
@@ -28,11 +33,18 @@
|
||||
|
||||
#include "piunits_base.h"
|
||||
|
||||
//! \class PIUnits::Class::Time
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Descriptor of time and frequency units and their public type identifiers.
|
||||
//! \~russian Описатель единиц времени и частоты и их публичных идентификаторов типов.
|
||||
DECLARE_UNIT_CLASS_BEGIN(Time, 0x300)
|
||||
//! \~english Supported time unit type identifiers.
|
||||
//! \~russian Поддерживаемые идентификаторы типов единиц времени.
|
||||
enum {
|
||||
Second = typeStart,
|
||||
Hertz,
|
||||
_LastType,
|
||||
Second = typeStart /** \~english Second \~russian Секунда */,
|
||||
Hertz /** \~english Hertz \~russian Герц */,
|
||||
_LastType
|
||||
};
|
||||
DECLARE_UNIT_CLASS_END(Time)
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
/*! \file piunits_prefix.h
|
||||
* \ingroup Core
|
||||
* \~\brief
|
||||
* \~english Unit prefixes
|
||||
* \~russian Префиксы единиц измерения
|
||||
*/
|
||||
//! \~\file piunits_prefix.h
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Unit prefixes
|
||||
//! \~russian Префиксы единиц измерения
|
||||
/*
|
||||
PIP - Platform Independent Primitives
|
||||
Unit prefix
|
||||
@@ -28,43 +27,61 @@
|
||||
|
||||
#include "pistring.h"
|
||||
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Namespace containing unit prefix helpers.
|
||||
//! \~russian Пространство имен со вспомогательными средствами префиксов единиц.
|
||||
namespace PIUnits {
|
||||
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Helpers for localized prefix names, symbols, and multipliers.
|
||||
//! \~russian Вспомогательные методы для локализованных имен, обозначений и множителей префиксов.
|
||||
class PIP_EXPORT Prefix {
|
||||
friend class Value;
|
||||
|
||||
public:
|
||||
//! \~english Supported SI prefixes.
|
||||
//! \~russian Поддерживаемые префиксы СИ.
|
||||
enum {
|
||||
None,
|
||||
None /** \~english No prefix \~russian Без префикса */,
|
||||
|
||||
Deca = 0x100, // da 10^1 10
|
||||
Hecto, // h 10^2 100
|
||||
Kilo, // k 10^3 1000
|
||||
Mega, // M 10^6 1000000
|
||||
Giga, // G 10^9 1000000000
|
||||
Tera, // T 10^12 1000000000000
|
||||
Peta, // P 10^15 1000000000000000
|
||||
Exa, // E 10^18 1000000000000000000
|
||||
Zetta, // Z 10^21 1000000000000000000000
|
||||
Yotta, // Y 10^24 1000000000000000000000000
|
||||
Ronna, // R 10^27 1000000000000000000000000000
|
||||
Quetta, // Q 10^30 1000000000000000000000000000000
|
||||
Deca = 0x100 /** \~english Deca prefix, 10^1 \~russian Префикс дека, 10^1 */,
|
||||
Hecto /** \~english Hecto prefix, 10^2 \~russian Префикс гекто, 10^2 */,
|
||||
Kilo /** \~english Kilo prefix, 10^3 \~russian Префикс кило, 10^3 */,
|
||||
Mega /** \~english Mega prefix, 10^6 \~russian Префикс мега, 10^6 */,
|
||||
Giga /** \~english Giga prefix, 10^9 \~russian Префикс гига, 10^9 */,
|
||||
Tera /** \~english Tera prefix, 10^12 \~russian Префикс тера, 10^12 */,
|
||||
Peta /** \~english Peta prefix, 10^15 \~russian Префикс пета, 10^15 */,
|
||||
Exa /** \~english Exa prefix, 10^18 \~russian Префикс экса, 10^18 */,
|
||||
Zetta /** \~english Zetta prefix, 10^21 \~russian Префикс зетта, 10^21 */,
|
||||
Yotta /** \~english Yotta prefix, 10^24 \~russian Префикс йотта, 10^24 */,
|
||||
Ronna /** \~english Ronna prefix, 10^27 \~russian Префикс ронна, 10^27 */,
|
||||
Quetta /** \~english Quetta prefix, 10^30 \~russian Префикс кветта, 10^30 */,
|
||||
|
||||
Deci = 0x200, // d 10^−1 0.1
|
||||
Centi, // c 10^−2 0.01
|
||||
Milli, // m 10^−3 0.001
|
||||
Micro, // μ 10^−6 0.000001
|
||||
Nano, // n 10^−9 0.000000001
|
||||
Pico, // p 10^−12 0.000000000001
|
||||
Femto, // f 10^−15 0.000000000000001
|
||||
Atto, // a 10^−18 0.000000000000000001
|
||||
Zepto, // z 10^−21 0.000000000000000000001
|
||||
Yocto, // y 10^−24 0.000000000000000000000001
|
||||
Ronto, // r 10^−27 0.000000000000000000000000001
|
||||
Deci = 0x200 /** \~english Deci prefix, 10^-1 \~russian Префикс деци, 10^-1 */,
|
||||
Centi /** \~english Centi prefix, 10^-2 \~russian Префикс санти, 10^-2 */,
|
||||
Milli /** \~english Milli prefix, 10^-3 \~russian Префикс милли, 10^-3 */,
|
||||
Micro /** \~english Micro prefix, 10^-6 \~russian Префикс микро, 10^-6 */,
|
||||
Nano /** \~english Nano prefix, 10^-9 \~russian Префикс нано, 10^-9 */,
|
||||
Pico /** \~english Pico prefix, 10^-12 \~russian Префикс пико, 10^-12 */,
|
||||
Femto /** \~english Femto prefix, 10^-15 \~russian Префикс фемто, 10^-15 */,
|
||||
Atto /** \~english Atto prefix, 10^-18 \~russian Префикс атто, 10^-18 */,
|
||||
Zepto /** \~english Zepto prefix, 10^-21 \~russian Префикс зепто, 10^-21 */,
|
||||
Yocto /** \~english Yocto prefix, 10^-24 \~russian Префикс йокто, 10^-24 */,
|
||||
Ronto /** \~english Ronto prefix, 10^-27 \~russian Префикс ронто, 10^-27 */,
|
||||
};
|
||||
|
||||
//! \~english Returns localized full name of prefix "prefix".
|
||||
//! \~russian Возвращает локализованное полное имя префикса "prefix".
|
||||
static PIString name(int prefix);
|
||||
|
||||
//! \~english Returns localized short symbol of prefix "prefix".
|
||||
//! \~russian Возвращает локализованное короткое обозначение префикса "prefix".
|
||||
static PIString prefix(int prefix);
|
||||
|
||||
//! \~english Returns numeric multiplier for prefix "prefix".
|
||||
//! \~russian Возвращает числовой множитель префикса "prefix".
|
||||
static double multiplier(int prefix);
|
||||
|
||||
private:
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
/*! \file piunits_value.h
|
||||
* \ingroup Core
|
||||
* \~\brief
|
||||
* \~english Unit value
|
||||
* \~russian Единица измерения
|
||||
*/
|
||||
//! \~\file piunits_value.h
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Typed unit value
|
||||
//! \~russian Типизированное значение единицы измерения
|
||||
/*
|
||||
PIP - Platform Independent Primitives
|
||||
Unit value
|
||||
@@ -29,19 +28,48 @@
|
||||
#include "piunits_base.h"
|
||||
|
||||
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Namespace containing typed unit values and helpers.
|
||||
//! \~russian Пространство имен с типизированными значениями единиц и вспомогательными средствами.
|
||||
namespace PIUnits {
|
||||
|
||||
//! \class PIUnits::Value
|
||||
//! \~\ingroup Units
|
||||
//! \~\brief
|
||||
//! \~english Numeric value paired with a registered unit type.
|
||||
//! \~russian Числовое значение, связанное с зарегистрированным типом единицы.
|
||||
class PIP_EXPORT Value {
|
||||
public:
|
||||
//! \~english Constructs value "v" of unit type "t".
|
||||
//! \~russian Создает значение "v" типа единицы "t".
|
||||
Value(double v = 0., int t = Class::Invalid);
|
||||
|
||||
|
||||
//! \~english Returns whether the value references a registered unit type.
|
||||
//! \~russian Возвращает, ссылается ли значение на зарегистрированный тип единицы.
|
||||
bool isValid() const { return m_type >= 0 && m_class; }
|
||||
|
||||
//! \~english Returns whether the value has no registered unit type.
|
||||
//! \~russian Возвращает, не содержит ли значение зарегистрированного типа единицы.
|
||||
bool isNotValid() const { return m_type < 0 || !m_class; }
|
||||
|
||||
|
||||
//! \~english Returns stored numeric value.
|
||||
//! \~russian Возвращает сохраненное числовое значение.
|
||||
double value() const { return m_value; }
|
||||
|
||||
//! \~english Formats the value with localized unit suffix and automatic prefix when supported.
|
||||
//! \~russian Форматирует значение с локализованным обозначением единицы и автоматическим префиксом, если он поддерживается.
|
||||
PIString toString(char format = 'g', int prec = 5) const;
|
||||
|
||||
|
||||
//! \~english Converts the value to unit type "type_to" inside the same unit family.
|
||||
//! \~russian Преобразует значение к типу единицы "type_to" внутри того же семейства единиц.
|
||||
bool convert(int type_to);
|
||||
|
||||
//! \~english Returns converted copy in unit type "type_to", or invalid value on failure.
|
||||
//! \~russian Возвращает преобразованную копию в типе единицы "type_to" или невалидное значение при ошибке.
|
||||
Value converted(int type_to);
|
||||
|
||||
private:
|
||||
@@ -52,6 +80,10 @@ private:
|
||||
|
||||
}; // namespace PIUnits
|
||||
|
||||
//! \~\ingroup Units
|
||||
//! \relatesalso PIUnits::Value
|
||||
//! \~english Writes formatted unit value to \a PICout.
|
||||
//! \~russian Записывает форматированное значение единицы в \a PICout.
|
||||
inline PICout operator<<(PICout s, const PIUnits::Value & v) {
|
||||
s << v.toString();
|
||||
return s;
|
||||
|
||||
Reference in New Issue
Block a user