This commit is contained in:
2026-03-07 17:07:38 +03:00
parent 4557498f6d
commit bd5029aa62
5 changed files with 56 additions and 66 deletions

View File

@@ -38,11 +38,12 @@ public:
//! \~english Coordinate system used by stored components.
//! \~russian Система координат, используемая для хранимых компонент.
enum CoordinateSystem {
Unknown = 0, /** \~english Unknown coordinate system \~russian Неизвестная система координат */,
Geodetic, /** \~english Geodetic latitude, longitude and height above the ellipsoid \~russian Геодезическая широта, долгота и высота над эллипсоидом */,
Geocentric, /** \~english Geocentric latitude, longitude and radius \~russian Геоцентрическая широта, долгота и радиус */,
Cartesian, /** \~english Earth-centered Earth-fixed Cartesian coordinates \~russian Декартовы координаты ECEF */,
Spherical /** \~english Spherical coordinates as theta, phi and radius \~russian Сферические координаты: тета, фи и радиус */
Unknown = 0, /** \~english Unknown coordinate system \~russian Неизвестная система координат */
Geodetic, /** \~english Geodetic latitude, longitude and height above the ellipsoid \~russian Геодезическая широта, долгота и высота
над эллипсоидом */
Geocentric, /** \~english Geocentric latitude, longitude and radius \~russian Геоцентрическая широта, долгота и радиус */
Cartesian, /** \~english Earth-centered Earth-fixed Cartesian coordinates \~russian Декартовы координаты ECEF */
Spherical /** \~english Spherical coordinates as theta, phi and radius \~russian Сферические координаты: тета, фи и радиус */
};
//! \~english One centimeter tolerance in meters.

View File

@@ -84,50 +84,50 @@ public:
//! \~english Address space qualifier of a kernel argument.
//! \~russian Квалификатор адресного пространства аргумента ядра.
enum AddressQualifier {
AddressGlobal, /** \~english Global memory argument \~russian Аргумент в глобальной памяти */,
AddressLocal, /** \~english Local memory argument \~russian Аргумент в локальной памяти */,
AddressConstant, /** \~english Constant memory argument \~russian Аргумент в константной памяти */,
AddressGlobal, /** \~english Global memory argument \~russian Аргумент в глобальной памяти */
AddressLocal, /** \~english Local memory argument \~russian Аргумент в локальной памяти */
AddressConstant, /** \~english Constant memory argument \~russian Аргумент в константной памяти */
AddressPrivate, /** \~english Private argument \~russian Приватный аргумент */
};
//! \~english Access qualifier of an image or memory argument.
//! \~russian Квалификатор доступа к аргументу изображения или памяти.
enum AccessQualifier {
AccessReadOnly, /** \~english Read-only access \~russian Доступ только для чтения */,
AccessWriteOnly, /** \~english Write-only access \~russian Доступ только для записи */,
AccessReadWrite, /** \~english Read-write access \~russian Доступ для чтения и записи */,
AccessReadOnly, /** \~english Read-only access \~russian Доступ только для чтения */
AccessWriteOnly, /** \~english Write-only access \~russian Доступ только для записи */
AccessReadWrite, /** \~english Read-write access \~russian Доступ для чтения и записи */
AccessNone, /** \~english Access qualifier is not specified \~russian Квалификатор доступа не задан */
};
//! \~english Intended data flow direction for buffers.
//! \~russian Предполагаемое направление обмена данными для буферов.
enum Direction {
Input = 0x01, /** \~english Host-to-device input buffer \~russian Входной буфер host->device */,
Output = 0x02, /** \~english Device-to-host output buffer \~russian Выходной буфер device->host */,
Input = 0x01, /** \~english Host-to-device input buffer \~russian Входной буфер host->device */
Output = 0x02, /** \~english Device-to-host output buffer \~russian Выходной буфер device->host */
InputOutput = Input | Output /** \~english Bidirectional buffer \~russian Двунаправленный буфер */
};
//! \~english Type qualifier of a kernel argument.
//! \~russian Квалификатор типа аргумента ядра.
enum TypeQualifier {
TypeConst, /** \~english Constant argument \~russian Константный аргумент */,
TypeRestrict, /** \~english Restricted argument \~russian Аргумент с qualifier `restrict` */,
TypeVolatile, /** \~english Volatile argument \~russian Аргумент с qualifier `volatile` */,
TypeConst, /** \~english Constant argument \~russian Константный аргумент */
TypeRestrict, /** \~english Restricted argument \~russian Аргумент с qualifier `restrict` */
TypeVolatile, /** \~english Volatile argument \~russian Аргумент с qualifier `volatile` */
TypeNone, /** \~english No type qualifier \~russian Квалификатор типа отсутствует */
};
//! \~english Scalar argument type recognized by the wrapper.
//! \~russian Скалярный тип аргумента, распознаваемый оберткой.
enum ArgType {
Char = 1, /** \~english Signed 8-bit integer \~russian Знаковое 8-битное целое */,
UChar, /** \~english Unsigned 8-bit integer \~russian Беззнаковое 8-битное целое */,
Short, /** \~english Signed 16-bit integer \~russian Знаковое 16-битное целое */,
UShort, /** \~english Unsigned 16-bit integer \~russian Беззнаковое 16-битное целое */,
Int, /** \~english Signed 32-bit integer \~russian Знаковое 32-битное целое */,
UInt, /** \~english Unsigned 32-bit integer \~russian Беззнаковое 32-битное целое */,
Long, /** \~english Signed long integer \~russian Знаковое long-целое */,
ULong, /** \~english Unsigned long integer \~russian Беззнаковое long-целое */,
Float, /** \~english Single-precision floating point \~russian Число с плавающей точкой одинарной точности */,
Char = 1, /** \~english Signed 8-bit integer \~russian Знаковое 8-битное целое */
UChar, /** \~english Unsigned 8-bit integer \~russian Беззнаковое 8-битное целое */
Short, /** \~english Signed 16-bit integer \~russian Знаковое 16-битное целое */
UShort, /** \~english Unsigned 16-bit integer \~russian Беззнаковое 16-битное целое */
Int, /** \~english Signed 32-bit integer \~russian Знаковое 32-битное целое */
UInt, /** \~english Unsigned 32-bit integer \~russian Беззнаковое 32-битное целое */
Long, /** \~english Signed long integer \~russian Знаковое long-целое */
ULong, /** \~english Unsigned long integer \~russian Беззнаковое long-целое */
Float, /** \~english Single-precision floating point \~russian Число с плавающей точкой одинарной точности */
Double, /** \~english Double-precision floating point \~russian Число с плавающей точкой двойной точности */
};

View File

@@ -37,12 +37,14 @@ public:
//! \~english Matching options.
//! \~russian Опции сопоставления.
enum Option {
None = 0x0, /*!< \~english No extra options \~russian Без дополнительных опций */,
CaseInsensitive = 0x01, /*!< \~english Ignore character case \~russian Игнорировать регистр символов */,
Singleline = 0x02, /*!< \~english Let \c . match a newline \~russian Разрешить \c . совпадать с переводом строки */,
Multiline = 0x04, /*!< \~english Let \c ^ and \c $ work on line boundaries \~russian Разрешить \c ^ и \c $ работать на границах строк */,
InvertedGreediness = 0x08, /*!< \~english Make quantifiers non-greedy by default \~russian Сделать квантификаторы по умолчанию нежадными */,
Extended = 0x10 /*!< \~english Use extended pattern syntax \~russian Использовать расширенный синтаксис шаблона */
None = 0x0, /*!< \~english No extra options \~russian Без дополнительных опций */
CaseInsensitive = 0x01, /*!< \~english Ignore character case \~russian Игнорировать регистр символов */
Singleline = 0x02, /*!< \~english Let \c . match a newline \~russian Разрешить \c . совпадать с переводом строки */
Multiline =
0x04, /*!< \~english Let \c ^ and \c $ work on line boundaries \~russian Разрешить \c ^ и \c $ работать на границах строк */
InvertedGreediness =
0x08, /*!< \~english Make quantifiers non-greedy by default \~russian Сделать квантификаторы по умолчанию нежадными */
Extended = 0x10 /*!< \~english Use extended pattern syntax \~russian Использовать расширенный синтаксис шаблона */
};
//! \~english Flag set of \a Option values.

View File

@@ -106,6 +106,7 @@ public:
destroy();
f = v.f;
if (f && v.ptr) f->newT(ptr, v.ptr);
return *this;
}
//! \~english Stores value `v`.
@@ -178,34 +179,26 @@ private:
//! \~\brief
//! \~english Registers a readable type name for %PIVariantSimple.
//! \~russian Регистрирует читаемое имя типа для %PIVariantSimple.
#define REGISTER_PIVARIANTSIMPLE(Type) \
template<> \
class __VariantFunctions__<Type>: public __VariantFunctionsBase__ { \
public: \
__VariantFunctionsBase__ * instance() final { \
static __VariantFunctions__<Type> ret; \
return &ret; \
} \
PIString typeName() const final { \
static PIString ret(#Type); \
return ret; \
} \
uint hash() const final { \
static uint ret = typeName().hash(); \
return ret; \
} \
void newT(void *& ptr, const void * value) final { \
ptr = (void *)(new Type(*(const Type *)value)); \
} \
void newNullT(void *& ptr) final { \
ptr = (void *)(new Type()); \
} \
void assignT(void *& ptr, const void * value) final { \
*(Type *)ptr = *(const Type *)value; \
} \
void deleteT(void *& ptr) final { \
delete (Type *)(ptr); \
} \
#define REGISTER_PIVARIANTSIMPLE(Type) \
template<> \
class __VariantFunctions__<Type>: public __VariantFunctionsBase__ { \
public: \
__VariantFunctionsBase__ * instance() final { \
static __VariantFunctions__<Type> ret; \
return &ret; \
} \
PIString typeName() const final { \
static PIString ret(#Type); \
return ret; \
} \
uint hash() const final { \
static uint ret = typeName().hash(); \
return ret; \
} \
void newT(void *& ptr, const void * value) final { ptr = (void *)(new Type(*(const Type *)value)); } \
void newNullT(void *& ptr) final { ptr = (void *)(new Type()); } \
void assignT(void *& ptr, const void * value) final { *(Type *)ptr = *(const Type *)value; } \
void deleteT(void *& ptr) final { delete (Type *)(ptr); } \
};
REGISTER_PIVARIANTSIMPLE(std::function<void(void *)>)

View File

@@ -51,13 +51,7 @@
bool supportPrefixesSmaller(int type) const override; \
\
public: \
//! \~english Returns localized name of this unit family. \
//! \~russian Возвращает локализованное имя этого семейства единиц. \
PIString className() const override { \
return piTr(#Name, "PIUnits"); \
} \
//! \~english Returns stable identifier of this unit family. \
//! \~russian Возвращает стабильный идентификатор этого семейства единиц. \
PIString className() const override { return piTr(#Name, "PIUnits"); } \
uint classID() const override { \
static uint ret = PIStringAscii(#Name).hash(); \
return ret; \