PIP 5.5.3
Platform-Independent Primitives
Открытые типы | Открытые члены | Открытые статические члены | Относящиеся к классу функции | Полный список членов класса
Класс PIVariant

Вариантный тип. Подробнее...

#include <pivariant.h>

Открытые типы

enum  Type {
  pivInvalid = 0 , pivBool , pivChar , pivUChar ,
  pivShort , pivUShort , pivInt , pivUInt ,
  pivLLong , pivULLong , pivFloat , pivDouble ,
  pivLDouble , pivComplexd , pivComplexld , pivBitArray ,
  pivByteArray , pivString , pivStringList , pivTime ,
  pivDate , pivDateTime , pivSystemTime , pivEnum ,
  pivFile , pivDir , pivColor , pivPoint ,
  pivRect , pivIODevice , pivMathVector , pivMathMatrix ,
  pivLine , pivNetworkAddress , pivComplexf , pivCustom = 0xFF
}
 Тип содержимого PIVariant. Подробнее...
 

Открытые члены

 PIVariant ()
 Создает pivInvalid PIVariant.
 
 PIVariant (const PIVariant &v)
 Создает копию PIVariant.
 
 PIVariant (PIVariant &&v)
 Перемещающий конструктор.
 
 PIVariant (const char *v)
 Создает PIVariant из строки.
 
 PIVariant (const bool v)
 Создает PIVariant из логического значения.
 
 PIVariant (const char v)
 Создает PIVariant из символа.
 
 PIVariant (const uchar v)
 Создает PIVariant из целого числа.
 
 PIVariant (const short v)
 Создает PIVariant из целого числа.
 
 PIVariant (const ushort v)
 Создает PIVariant из целого числа.
 
 PIVariant (const int &v)
 Создает PIVariant из целого числа.
 
 PIVariant (const uint &v)
 Создает PIVariant из целого числа.
 
 PIVariant (const llong &v)
 Создает PIVariant из целого числа.
 
 PIVariant (const ullong &v)
 Создает PIVariant из целого числа.
 
 PIVariant (const float &v)
 Создает PIVariant из вещественного числа.
 
 PIVariant (const double &v)
 Создает PIVariant из вещественного числа.
 
 PIVariant (const ldouble &v)
 Создает PIVariant из вещественного числа.
 
 PIVariant (const complexf &v)
 Создает PIVariant из комплексного числа.
 
 PIVariant (const complexd &v)
 Создает PIVariant из комплексного числа.
 
 PIVariant (const complexld &v)
 Создает PIVariant из комплексного числа.
 
 PIVariant (const PIBitArray &v)
 Создает PIVariant из массива битов.
 
 PIVariant (const PIByteArray &v)
 Создает PIVariant из массива байтов.
 
 PIVariant (const PIString &v)
 Создает PIVariant из строки.
 
 PIVariant (const PIStringList &v)
 Создает PIVariant из массива строк.
 
 PIVariant (const PITime &v)
 Создает PIVariant из времени.
 
 PIVariant (const PIDate &v)
 Создает PIVariant из даты.
 
 PIVariant (const PIDateTime &v)
 Создает PIVariant из даты и времени.
 
 PIVariant (const PISystemTime &v)
 Создает PIVariant из системного времени.
 
 PIVariant (const PIVariantTypes::Enum &v)
 Создает PIVariant из перечисления.
 
 PIVariant (const PIVariantTypes::File &v)
 Создает PIVariant из файла.
 
 PIVariant (const PIVariantTypes::Dir &v)
 Создает PIVariant из директории.
 
 PIVariant (const PIVariantTypes::Color &v)
 Создает PIVariant из цвета.
 
 PIVariant (const PIVariantTypes::IODevice &v)
 Создает PIVariant из IODevice.
 
 PIVariant (const PIPointd &v)
 Создает PIVariant из точки.
 
 PIVariant (const PIRectd &v)
 Создает PIVariant из прямоугольника.
 
 PIVariant (const PILined &v)
 Создает PIVariant из линии.
 
 PIVariant (const PINetworkAddress &v)
 Создает PIVariant из PINetworkAddress.
 
 PIVariant (const PIMathVectord &v)
 Создает PIVariant из MathVector.
 
 PIVariant (const PIMathMatrixd &v)
 Создает PIVariant из MathMatrix.
 
void setValue (const char *v)
 Устанавливает значение и тип из строки
 
void setValue (const bool v)
 Устанавливает значение и тип из
 
void setValue (const char v)
 Устанавливает значение и тип из символа
 
void setValue (const uchar v)
 Устанавливает значение и тип из целого числа
 
void setValue (const short v)
 Устанавливает значение и тип из целого числа
 
void setValue (const ushort v)
 Устанавливает значение и тип из целого числа
 
void setValue (const int &v)
 Устанавливает значение и тип из целого числа
 
void setValue (const uint &v)
 Устанавливает значение и тип из целого числа
 
void setValue (const llong &v)
 Устанавливает значение и тип из целого числа
 
void setValue (const ullong &v)
 Устанавливает значение и тип из целого числа
 
void setValue (const float &v)
 Устанавливает значение и тип из вещественного числа
 
void setValue (const double &v)
 Устанавливает значение и тип из вещественного числа
 
void setValue (const ldouble &v)
 Устанавливает значение и тип из вещественного числа
 
void setValue (const complexf &v)
 Устанавливает значение и тип из комплексного числа
 
void setValue (const complexd &v)
 Устанавливает значение и тип из комплексного числа
 
void setValue (const complexld &v)
 Устанавливает значение и тип из комплексного числа
 
void setValue (const PIBitArray &v)
 Устанавливает значение и тип из массива битов
 
void setValue (const PIByteArray &v)
 Устанавливает значение и тип из массива байтов
 
void setValue (const PIString &v)
 Устанавливает значение и тип из строки
 
void setValue (const PIStringList &v)
 Устанавливает значение и тип из массива строк
 
void setValue (const PITime &v)
 Устанавливает значение и тип из времени
 
void setValue (const PIDate &v)
 Устанавливает значение и тип из даты
 
void setValue (const PIDateTime &v)
 Устанавливает значение и тип из даты и времени
 
void setValue (const PISystemTime &v)
 Устанавливает значение и тип из системного времени
 
void setValue (const PIVariantTypes::Enum &v)
 Устанавливает значение и тип из перечисления
 
void setValue (const PIVariantTypes::File &v)
 Устанавливает значение и тип из файла
 
void setValue (const PIVariantTypes::Dir &v)
 Устанавливает значение и тип из директории
 
void setValue (const PIVariantTypes::Color &v)
 Устанавливает значение и тип из цвета
 
void setValue (const PIVariantTypes::IODevice &v)
 Устанавливает значение и тип из IODevice.
 
void setValue (const PIPointd &v)
 Устанавливает значение и тип из точки
 
void setValue (const PIRectd &v)
 Устанавливает значение и тип из прямоугольника
 
void setValue (const PILined &v)
 Устанавливает значение и тип из линии
 
void setValue (const PIMathVectord &v)
 Устанавливает значение и тип из вектора
 
void setValue (const PINetworkAddress &v)
 Устанавливает значение и тип из PINetworkAddress.
 
void setValue (const PIMathMatrixd &v)
 Устанавливает значение и тип из матрицы
 
void setValueFromString (const PIString &v)
 Устанавливает текущее значение из строки без изменения типа
 
bool toBool () const
 Возвращает содержимое как boolean. Подробнее...
 
int toInt () const
 Возвращает содержимое как int. Подробнее...
 
llong toLLong () const
 Возвращает содержимое как long long. Подробнее...
 
float toFloat () const
 Возвращает содержимое как float. Подробнее...
 
double toDouble () const
 Возвращает содержимое как double. Подробнее...
 
ldouble toLDouble () const
 Возвращает содержимое как long double. Подробнее...
 
PITime toTime () const
 Возвращает содержимое как время Подробнее...
 
PIDate toDate () const
 Возвращает содержимое как дата Подробнее...
 
PIDateTime toDateTime () const
 Возвращает содержимое как дата и время Подробнее...
 
PISystemTime toSystemTime () const
 Возвращает содержимое как системное время Подробнее...
 
PIString toString () const
 Возвращает содержимое как строка Подробнее...
 
PIStringList toStringList () const
 Возвращает содержимое как массив строк Подробнее...
 
PIBitArray toBitArray () const
 Возвращает содержимое как массив битов Подробнее...
 
PIByteArray toByteArray () const
 Возвращает содержимое как массив байтов Подробнее...
 
PIVariantTypes::Enum toEnum () const
 Возвращает содержимое как перечисление Подробнее...
 
PIVariantTypes::File toFile () const
 Возвращает содержимое как файл Подробнее...
 
PIVariantTypes::Dir toDir () const
 Возвращает содержимое как директория Подробнее...
 
PIVariantTypes::Color toColor () const
 Возвращает содержимое как цвет Подробнее...
 
PIVariantTypes::IODevice toIODevice () const
 Возвращает содержимое как IODevice. Подробнее...
 
PIPointd toPoint () const
 Возвращает содержимое как точка Подробнее...
 
PIRectd toRect () const
 Возвращает содержимое как прямоугольник Подробнее...
 
PILined toLine () const
 Возвращает содержимое как линия Подробнее...
 
PINetworkAddress toNetworkAddress () const
 Возвращает содержимое как PINetworkAddress. Подробнее...
 
PIMathVectord toMathVector () const
 Возвращает содержимое как вектор Подробнее...
 
PIMathMatrixd toMathMatrix () const
 Возвращает содержимое как матрица Подробнее...
 
template<typename T >
value () const
 Возвращает содержимое в качестве своего типа Подробнее...
 
PIVariantoperator= (const PIVariant &v)
 Оператор присваивания.
 
PIVariantoperator= (PIVariant &&v)
 Оператор присваивания.
 
PIVariantoperator= (const char *v)
 Оператор присваивания.
 
PIVariantoperator= (const bool v)
 Оператор присваивания.
 
PIVariantoperator= (const char v)
 Оператор присваивания.
 
PIVariantoperator= (const uchar v)
 Оператор присваивания.
 
PIVariantoperator= (const short v)
 Оператор присваивания.
 
PIVariantoperator= (const ushort v)
 Оператор присваивания.
 
PIVariantoperator= (const int &v)
 Оператор присваивания.
 
PIVariantoperator= (const uint &v)
 Оператор присваивания.
 
PIVariantoperator= (const llong &v)
 Оператор присваивания.
 
PIVariantoperator= (const ullong &v)
 Оператор присваивания.
 
PIVariantoperator= (const float &v)
 Оператор присваивания.
 
PIVariantoperator= (const double &v)
 Оператор присваивания.
 
PIVariantoperator= (const ldouble &v)
 Оператор присваивания.
 
PIVariantoperator= (const complexf &v)
 Оператор присваивания.
 
PIVariantoperator= (const complexd &v)
 Оператор присваивания.
 
PIVariantoperator= (const complexld &v)
 Оператор присваивания.
 
PIVariantoperator= (const PIBitArray &v)
 Оператор присваивания.
 
PIVariantoperator= (const PIByteArray &v)
 Оператор присваивания.
 
PIVariantoperator= (const PIString &v)
 Оператор присваивания.
 
PIVariantoperator= (const PIStringList &v)
 Оператор присваивания.
 
PIVariantoperator= (const PITime &v)
 Оператор присваивания.
 
PIVariantoperator= (const PIDate &v)
 Оператор присваивания.
 
PIVariantoperator= (const PIDateTime &v)
 Оператор присваивания.
 
PIVariantoperator= (const PISystemTime &v)
 Оператор присваивания.
 
PIVariantoperator= (const PIVariantTypes::Enum &v)
 Оператор присваивания.
 
PIVariantoperator= (const PIVariantTypes::File &v)
 Оператор присваивания.
 
PIVariantoperator= (const PIVariantTypes::Dir &v)
 Оператор присваивания.
 
PIVariantoperator= (const PIVariantTypes::Color &v)
 Оператор присваивания.
 
PIVariantoperator= (const PIVariantTypes::IODevice &v)
 Оператор присваивания.
 
PIVariantoperator= (const PIPointd &v)
 Оператор присваивания.
 
PIVariantoperator= (const PIRectd &v)
 Оператор присваивания.
 
PIVariantoperator= (const PILined &v)
 Оператор присваивания.
 
PIVariantoperator= (const PINetworkAddress &v)
 Оператор присваивания.
 
PIVariantoperator= (const PIMathVectord &v)
 Оператор присваивания.
 
PIVariantoperator= (const PIMathMatrixd &v)
 Оператор присваивания.
 
bool operator== (const PIVariant &v) const
 Оператор сравнения. Сравнивает тип и содержимое.
 
bool operator!= (const PIVariant &v) const
 Оператор сравнения. Сравнивает тип и содержимое.
 
PIVariant::Type type () const
 Возвращает тип значения.
 
uint typeID () const
 Возвращает ID типа значения.
 
PIString typeName () const
 Возвращает имя типа значения.
 
bool isValid () const
 Возвращает не является ли тип pivInvalid.
 
void swap (PIVariant &v)
 Меняет с другим PIVariant.
 

Открытые статические члены

template<typename T >
static PIVariant fromValue (const T &v)
 Возвращает новый PIVariant из значения своего типа. Подробнее...
 
static PIVariant fromType (const PIString &type)
 Возвращает новый PIVariant из пустого конструктора типа "type".
 
static PIVariant fromType (uint type_id)
 Возвращает новый PIVariant из пустого конструктора типа c ID "type_id".
 
static PIVariant::Type typeFromName (const PIString &tname)
 Возвращает тип из его названия.
 
static PIVariant::Type typeFromID (uint type_id)
 Возвращает тип из его ID.
 
static uint typeIDFromName (const PIString &tname)
 Возвращает тип из его названия.
 
static uint typeIDFromType (PIVariant::Type type)
 Возвращает ID типа от стандатного типа.
 
static PIString typeName (PIVariant::Type type)
 Возвращает имя типа.
 
template<typename T >
static PIString typeName ()
 Возвращает имя типа.
 
static PIString typeNameFromID (uint type_id)
 Возвращает имя типа из его ID.
 
static PIVector< uint > knownTypeIDs ()
 Возвращает все зарегистрированные ID типов.
 

Относящиеся к классу функции

(не члены класса)

#define REGISTER_VARIANT(Typename)
 Макрос для регистрации типа для использования в PIVariant.
 
#define REGISTER_NS_VARIANT(Namespace, Typename)
 Макрос для регистрации типа с пространством имен для использования в PIVariant.
 

Подробное описание

Вариантный тип.

Краткий обзор

Этот класс предоставляет некий общий тип, который может содержать все стандартные тип, некоторые типы PIP, а также любой свой тип. В случае стандартных типов предоставляется автоматическое преобразование между ними.

Использование

PIVariant полезен когда надо передать несколько разнотипных значений одним массивом, или тип заранее неизвестен, например:

array << PIVariant(10) << PIVariant(1.61) << PIVariant(true) << PIVariant("0xFF");
piCout << array;
for (auto i: array)
piCout << i.toInt();
PIVariant()
Создает pivInvalid PIVariant.
Definition: pivariant.cpp:77
#define piCout
Макрос для условного (piDebug) вывода в PICout(StdOut)
Definition: picout.h:35

Результат:

{PIVariant(Int, 10), PIVariant(Double, 1,61), PIVariant(Bool, true), PIVariant(String, 0xFF)}
10
1
1
255

Перечисления

◆ Type

Тип содержимого PIVariant.

Элементы перечислений
pivInvalid 

Недействительный тип, также конструированный по умолчанию

pivBool 

bool

pivChar 

char

pivUChar 

uchar

pivShort 

short

pivUShort 

ushort

pivInt 

int

pivUInt 

uint

pivLLong 

llong

pivULLong 

ullong

pivFloat 

float

pivDouble 

double

pivLDouble 

ldouble

pivComplexd 

complexd

pivComplexld 

complexld

pivBitArray 

PIBitArray

pivByteArray 

PIByteArray

pivString 

PIString

pivStringList 

PIStringList

pivTime 

PITime

pivDate 

PIDate

pivDateTime 

PIDateTime

pivSystemTime 

PISystemTime

pivEnum 

PIVariantTypes::Enum

pivFile 

PIVariantTypes::File

pivDir 

PIVariantTypes::Dir

pivColor 

PIVariantTypes::Color

pivPoint 

PIPoint<double>

pivRect 

PIRect<double>

pivIODevice 

PIVariantTypes::IODevice

pivMathVector 

PIMathVector<double>

pivMathMatrix 

PIMathMatrix<double>

pivLine 

PILine<double>

pivNetworkAddress 

PINetworkAddress

pivComplexf 

complexf

pivCustom 

Свой тип

Методы

◆ toBool()

bool PIVariant::toBool ( ) const

Возвращает содержимое как boolean.

Для численных типов возвращает true если значение != 0.
Для типа String возвращает PIString::toBool().
Для типа StringList возвращает false если массив пустой,
иначе возвращает PIString::toBool() первой строки.
Для остальных типов возвращает false.

◆ toInt()

int PIVariant::toInt ( ) const

Возвращает содержимое как int.

Для численных типов возвращает целочисленное значение.
Для типа String возвращает PIString::toInt().
Для типа StringList возвращает 0 если массив пустой,
иначе возвращает PIString::toInt() первой строки.
Для остальных типов возвращает 0.

◆ toLLong()

llong PIVariant::toLLong ( ) const

Возвращает содержимое как long long.

Для численных типов возвращает целочисленное значение.
Для типа String возвращает PIString::toLLong().
Для типа StringList возвращает 0L если массив пустой,
иначе возвращает PIString::toLLong() первой строки.
Для остальных типов возвращает 0L.

◆ toFloat()

float PIVariant::toFloat ( ) const

Возвращает содержимое как float.

Для численных типов возвращает вещественное значение.
Для типа String возвращает PIString::toFloat().
Для типа StringList возвращает 0.f если массив пустой,
иначе возвращает PIString::toFloat() первой строки.
Для остальных типов возвращает 0.f .

◆ toDouble()

double PIVariant::toDouble ( ) const

Возвращает содержимое как double.

Для численных типов возвращает вещественное значение.
Для типа String возвращает PIString::toDouble().
Для типа StringList возвращает 0. если массив пустой,
иначе возвращает PIString::toDouble() первой строки.
Для остальных типов возвращает 0. .

◆ toLDouble()

ldouble PIVariant::toLDouble ( ) const

Возвращает содержимое как long double.

Для численных типов возвращает вещественное значение.
Для типа String возвращает PIString::toLDouble().
Для типа StringList возвращает 0. если массив пустой,
иначе возвращает PIString::toLDouble() первой строки.
Для остальных типов возвращает 0. .

◆ toTime()

PITime PIVariant::toTime ( ) const

Возвращает содержимое как время

Для типа Time возвращает время.
Для типа DateTime возвращает часть времени.
Для остальных типов возвращает PITime().

◆ toDate()

PIDate PIVariant::toDate ( ) const

Возвращает содержимое как дата

Для типа Date возвращает дату.
Для типа DateTime возвращает часть даты.
Для остальных типов возвращает PIDate().

◆ toDateTime()

PIDateTime PIVariant::toDateTime ( ) const

Возвращает содержимое как дата и время

Для типа Time возвращает время без даты.
Для типа Date возвращает дату без времени.
Для типа DateTime возвращает время и дату.
Для остальных типов возвращает PIDateTime().

◆ toSystemTime()

PISystemTime PIVariant::toSystemTime ( ) const

Возвращает содержимое как системное время

Для типа SystemTime возвращает системное время.
Для типа String возвращает PISystemTime::fromString().
Для типа DateTime возвращает PIDateTime::toSystemTime().
Для остальных типов возвращает PISystemTime::fromSeconds() от toDouble().

◆ toString()

PIString PIVariant::toString ( ) const

Возвращает содержимое как строка

Для численных типов возвращает PIString::fromNumber().
Для типа String возвращает строку.
Для типа StringList возвращает объединенную строку ("(" + PIStringList::join("; ") + ")").
Для типов BitArray или ByteArray возвращает количество бит/байт.
Для типов Time, Date или DateTime возвращает toString().
Для типов SystemTime возвращает PISystemTime::toString().
Для типов NetworkAddress возвращает "i.i.i.i:p".
Для остальных типов возвращает "".

◆ toStringList()

PIStringList PIVariant::toStringList ( ) const

Возвращает содержимое как массив строк

Для типа StringList возвращает массив строк.
Для остальных типов возвращает PIStringList с одной строкой toString().

◆ toBitArray()

PIBitArray PIVariant::toBitArray ( ) const

Возвращает содержимое как массив битов

Для типа BitArray возвращает массив битов.
Для остальных типов возвращает PIBitArray от значения toLLong().

◆ toByteArray()

PIByteArray PIVariant::toByteArray ( ) const

Возвращает содержимое как массив байтов

Для типа ByteArray возвращает массив байтов.
Для остальных типов возвращает пустой PIByteArray.

◆ toEnum()

PIVariantTypes::Enum PIVariant::toEnum ( ) const

Возвращает содержимое как перечисление

Для типа Enum возвращает перечисление.
Для типа String возвращает Enum с одним членом.
Для типа StringList возвращает Enum с членами по строкам.
Для остальных типов возвращает пустой Enum.

◆ toFile()

PIVariantTypes::File PIVariant::toFile ( ) const

Возвращает содержимое как файл

Для типа File возвращает файл.
Для типа String возвращает File с путем значения строки.
Для остальных типов возвращает пустой File.

◆ toDir()

PIVariantTypes::Dir PIVariant::toDir ( ) const

Возвращает содержимое как директория

Для типа Dir возвращает директорию.
Для типа String возвращает Dir с путем значения строки.
Для остальных типов возвращает пустой Dir.

◆ toColor()

PIVariantTypes::Color PIVariant::toColor ( ) const

Возвращает содержимое как цвет

Для типа Color возвращает цвет.
Для типа Int возвращает цвет с целочисленным значением.
Для остальных типов возвращает пустой Color.

◆ toIODevice()

PIVariantTypes::IODevice PIVariant::toIODevice ( ) const

Возвращает содержимое как IODevice.

Для типа IODevice возвращает IODevice.
Для остальных типов возвращает пустой IODevice.

◆ toPoint()

PIPointd PIVariant::toPoint ( ) const

Возвращает содержимое как точка

Для типа Point возвращает точку.
Для остальных типов возвращает пустую PIPointd.

◆ toRect()

PIRectd PIVariant::toRect ( ) const

Возвращает содержимое как прямоугольник

Для типа Rect возвращает прямоугольник.
Для остальных типов возвращает пустой PIRectd.

◆ toLine()

PILined PIVariant::toLine ( ) const

Возвращает содержимое как линия

Для типа Line возвращает линию.
Для остальных типов возвращает пустую PILined.

◆ toNetworkAddress()

PINetworkAddress PIVariant::toNetworkAddress ( ) const

Возвращает содержимое как PINetworkAddress.

Для типа NetworkAddress возвращает адрес.
Для типа String возвращает адрес из формата "i.i.i.i:p".
Для остальных типов возвращает пустой PINetworkAddress.

◆ toMathVector()

PIMathVectord PIVariant::toMathVector ( ) const

Возвращает содержимое как вектор

Для типа MathVector возвращает вектор.
Для остальных типов возвращает пустой PIMathVectord.

◆ toMathMatrix()

PIMathMatrixd PIVariant::toMathMatrix ( ) const

Возвращает содержимое как матрица

Для типа MathMatrix возвращает матрицу.
Для остальных типов возвращает пустую PIMathMatrixd.

◆ value()

template<typename T >
T PIVariant::value ( ) const
inline

Возвращает содержимое в качестве своего типа

Для стандартных типов эквиваленстно методу to<Type>.
Для других возвращает тип T только если он был установлен ранее.

◆ fromValue()

template<typename T >
static PIVariant PIVariant::fromValue ( const T &  v)
inlinestatic

Возвращает новый PIVariant из значения своего типа.

Для стандартных типов эквиваленстно конструктору PIVariant().
Для других устанавливает содержимое из "v" и тип pivCustom.