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

Базовый класс для объектов, которые объявляют события, обработчики событий и зарегистрированные методы. Подробнее...

#include <piobject.h>

Граф наследования:PIObject:
Inheritance graph
[см. легенду]

Классы

class  Connection
 Дескриптор одного соединения между объектом-источником и объектом-приемником либо функтором. Подробнее...
 

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

 PIObject (const PIString &name=PIString())
 Создает объект и инициализирует его свойство name.
 
virtual ~PIObject ()
 Уничтожает объект, вызывает deleted() и отключает его от событийного графа.
 
PIString name () const
 Возвращает свойство name этого объекта.
 
virtual const char * className () const
 Возвращает зарегистрированное имя класса этого объекта.
 
virtual uint classNameID () const
 Возвращает хэш от className().
 
virtual const char * parentClassName () const
 Возвращает зарегистрированное имя родительского класса, либо пустую строку для корня.
 
bool debug () const
 Возвращает, включен ли вывод piCoutObj для этого объекта.
 
void setName (const PIString &name)
 Устанавливает свойство name этого объекта.
 
void setDebug (bool debug)
 Включает или отключает вывод piCoutObj для этого объекта.
 
PIVariant property (const char *name) const
 Возвращает свойство объекта по имени "name".
 
void setProperty (const char *name, const PIVariant &value)
 Устанавливает свойство "name" в значение "value" и создаёт его при необходимости. Подробнее...
 
bool isPropertyExists (const char *name) const
 Возвращает, существует ли свойство "name".
 
void setThreadSafe (bool yes)
 Включает или отключает внутренний мьютекс объекта во время выполнения обработчиков. Подробнее...
 
bool isThreadSafe () const
 Возвращает, включен ли внутренний мьютекс объекта для выполнения обработчиков.
 
bool execute (const PIString &method, const PIVector< PIVariantSimple > &vl)
 Выполняет зарегистрированный метод или метод-обработчик по имени с переданными аргументами. Подробнее...
 
bool execute (const PIString &method)
 Перегрузка execute() для метода без аргументов.
 
bool execute (const PIString &method, const PIVariantSimple &v0)
 Перегрузка execute() для одного аргумента.
 
bool execute (const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1)
 Перегрузка execute() для двух аргументов.
 
bool execute (const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2)
 Перегрузка execute() для трёх аргументов.
 
bool execute (const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2, const PIVariantSimple &v3)
 Перегрузка execute() для четырёх аргументов.
 
bool executeQueued (PIObject *performer, const PIString &method, const PIVector< PIVariantSimple > &vl)
 Ставит выполнение зарегистрированного метода в очередь объекта-исполнителя. Подробнее...
 
bool executeQueued (PIObject *performer, const PIString &method)
 Перегрузка executeQueued() для метода без аргументов.
 
bool executeQueued (PIObject *performer, const PIString &method, const PIVariantSimple &v0)
 Перегрузка executeQueued() для одного аргумента.
 
bool executeQueued (PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1)
 Перегрузка executeQueued() для двух аргументов.
 
bool executeQueued (PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2)
 Перегрузка executeQueued() для трёх аргументов.
 
bool executeQueued (PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2, const PIVariantSimple &v3)
 Перегрузка executeQueued() для четырёх аргументов.
 
void dump (const PIString &line_prefix=PIString()) const
 Выводит диагностическую информацию об объекте в проектный поток вывода.
 
PIStringList scopeList () const
 Возвращает зарегистрированную цепочку наследования объекта, включая его собственный класс.
 
PIStringList methodsEH () const
 Возвращает полные сигнатуры всех зарегистрированных событий и обработчиков для области этого класса.
 
bool isMethodEHContains (const PIString &name) const
 Возвращает, существует ли зарегистрированное событие или обработчик с таким именем.
 
PIString methodEHArguments (const PIString &name) const
 Возвращает список типов аргументов зарегистрированного метода через запятую.
 
PIString methodEHFullFormat (const PIString &name) const
 Возвращает полную зарегистрированную сигнатуру метода.
 
PIString methodEHFromAddr (const void *addr) const
 Возвращает имя зарегистрированного метода для указанного адреса точки входа.
 
void piDisconnect (const PIString &sig, PIObject *dest, void *ev_h)
 Разрывает соединения этого объекта-источника с конкретным обработчиком объекта-приемника для события "sig".
 
void piDisconnect (const PIString &sig, PIObject *dest)
 Разрывает все соединения этого объекта-источника от события "sig" к объекту-приемнику "dest".
 
void piDisconnect (const PIString &sig)
 Разрывает все соединения этого объекта-источника от события "sig".
 
bool isPIObject () const
 Возвращает, указывает ли этот указатель на ещё существующий экземпляр PIObject.
 
template<typename T >
bool isTypeOf () const
 Возвращает, принадлежит ли этот объект классу "T" или одному из его зарегистрированных потомков.
 
template<typename T >
T * cast () const
 Возвращает этот объект, приведённый к типу "T", если isTypeOf<T>() успешно, иначе nullptr.
 
void callQueuedEvents ()
 Выполняет все отложенные доставки, поставленные в очередь этому объекту-исполнителю.
 
bool maybeCallQueuedEvents ()
 Выполняет отложенные доставки только если этот объект использовался как исполнитель. Подробнее...
 
void deleteLater ()
 Планирует отложенное удаление объекта. Подробнее...
 

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

static bool execute (PIObject *o, const PIString &method, const PIVector< PIVariantSimple > &vl)
 Статическая удобная обёртка над execute().
 
static bool execute (PIObject *o, const PIString &method)
 Статическая перегрузка execute() без аргументов.
 
static bool execute (PIObject *o, const PIString &method, const PIVariantSimple &v0)
 Статическая перегрузка execute() для одного аргумента.
 
static bool execute (PIObject *o, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1)
 Статическая перегрузка execute() для двух аргументов.
 
static bool execute (PIObject *o, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2)
 Статическая перегрузка execute() для трёх аргументов.
 
static bool execute (PIObject *o, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2, const PIVariantSimple &v3)
 Статическая перегрузка execute() для четырёх аргументов.
 
static bool executeQueued (PIObject *o, PIObject *performer, const PIString &method, const PIVector< PIVariantSimple > &vl)
 Статическая удобная обёртка над executeQueued().
 
static bool executeQueued (PIObject *o, PIObject *performer, const PIString &method)
 Статическая перегрузка executeQueued() без аргументов.
 
static bool executeQueued (PIObject *o, PIObject *performer, const PIString &method, const PIVariantSimple &v0)
 Статическая перегрузка executeQueued() для одного аргумента.
 
static bool executeQueued (PIObject *o, PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1)
 Статическая перегрузка executeQueued() для двух аргументов.
 
static bool executeQueued (PIObject *o, PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2)
 Статическая перегрузка executeQueued() для трёх аргументов.
 
static bool executeQueued (PIObject *o, PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2, const PIVariantSimple &v3)
 Статическая перегрузка executeQueued() для четырёх аргументов.
 
static PIObject::Connection piConnect (PIObject *src, const PIString &sig, PIObject *dest_o, void *dest, void *ev_h, void *e_h, int args, const char *loc)
 Низкоуровневый помощник прямого соединения, лежащий под устаревшими макросами CONNECT*.
 
static PIObject::Connection piConnectU (PIObject *src, const PIString &sig, PIObject *dest_o, void *dest, const PIString &hname, const char *loc, PIObject *performer=0)
 Низкоуровневый помощник соединения по имени, лежащий под CONNECTU() и CONNECTU_QUEUED().
 
static PIObject::Connection piConnectLS (PIObject *src, const PIString &sig, std::function< void()> *f, const char *loc)
 Низкоуровневый помощник, который соединяет событие с лямбдой или обёрткой функтора.
 
static void piDisconnect (PIObject *src, const PIString &sig, PIObject *dest, void *ev_h)
 Разрывает соединения объекта-источника "src" с конкретным обработчиком объекта-приемника для события "sig".
 
static void piDisconnect (PIObject *src, const PIString &sig, PIObject *dest)
 Разрывает все соединения объекта-источника "src" от события "sig" к объекту-приемнику "dest".
 
static void piDisconnect (PIObject *src, const PIString &sig)
 Разрывает все соединения объекта-источника "src" от события "sig".
 
static void raiseEvent (PIObject *sender, const uint eventID)
 Внутренний помощник доставки для зарегистрированных событий без аргументов.
 
template<typename T0 >
static void raiseEvent (PIObject *sender, const uint eventID, const T0 &v0=T0())
 Внутренний помощник доставки для зарегистрированных событий с одним аргументом.
 
template<typename T0 , typename T1 >
static void raiseEvent (PIObject *sender, const uint eventID, const T0 &v0=T0(), const T1 &v1=T1())
 Внутренний помощник доставки для зарегистрированных событий с двумя аргументами.
 
template<typename T0 , typename T1 , typename T2 >
static void raiseEvent (PIObject *sender, const uint eventID, const T0 &v0=T0(), const T1 &v1=T1(), const T2 &v2=T2())
 Внутренний помощник доставки для зарегистрированных событий с тремя аргументами.
 
template<typename T0 , typename T1 , typename T2 , typename T3 >
static void raiseEvent (PIObject *sender, const uint eventID, const T0 &v0=T0(), const T1 &v1=T1(), const T2 &v2=T2(), const T3 &v3=T3())
 Внутренний помощник доставки для зарегистрированных событий с четырьмя аргументами.
 
static PIObjectfindByName (const PIString &name)
 Возвращает первый живой объект с именем "name", либо nullptr.
 
static bool isPIObject (const PIObject *o)
 Возвращает, указывает ли "o" на ещё существующий экземпляр PIObject.
 
static bool isPIObject (const void *o)
 Перегрузка isPIObject() для нетипизированного указателя.
 
template<typename T >
static bool isTypeOf (const PIObject *o)
 Возвращает, принадлежит ли "o" классу "T" или одному из его зарегистрированных потомков.
 
template<typename T >
static bool isTypeOf (const void *o)
 Перегрузка isTypeOf() для нетипизированного указателя.
 
static PIString simplifyType (const char *a, bool readable=true)
 Упрощает запись типа C++ для метаданных зарегистрированных методов.
 

Защищенные члены

PIObjectemitter () const
 Возвращает объект-источник, который вызвал текущее событие. Подробнее...
 
virtual void propertyChanged (const char *name)
 Виртуальный метод, вызываемый после изменения свойства "name" через setProperty().
 

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

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

#define piCoutObj
 Макрос для условного (piDebug && PIObject::debug()) вывода в PICout(StdOut) для наследников PIObject.
 
#define piCerrObj
 Макрос для условного (piDebug && PIObject::debug()) вывода в PICout(StdErr) для наследников PIObject.
 
#define PIOBJECT(name)
 Поместите этот макрос внутрь объявления прямого наследника PIObject, чтобы включить регистрацию событий, обработчиков и метаданных класса.
 
#define PIOBJECT_SUBCLASS(name, parent)
 Поместите этот макрос внутрь объявления наследника PIObject, чтобы унаследовать зарегистрированные методы и цепочку классов от "parent".
 
#define EVENT_HANDLER0(ret, name)   ret name()
 Объявляет зарегистрированный метод-обработчик событий с сигнатурой ret name().
 
#define EVENT_HANDLER1(ret, name, type0, var0)   ret name(type0 var0)
 Объявляет зарегистрированный метод-обработчик событий с одним аргументом.
 
#define EVENT_HANDLER2(ret, name, type0, var0, type1, var1)   ret name(type0 var0, type1 var1)
 Объявляет зарегистрированный метод-обработчик событий с двумя аргументами.
 
#define EVENT_HANDLER3(ret, name, type0, var0, type1, var1, type2, var2)   ret name(type0 var0, type1 var1, type2 var2)
 Объявляет зарегистрированный метод-обработчик событий с тремя аргументами.
 
#define EVENT_HANDLER4(ret, name, type0, var0, type1, var1, type2, var2, type3, var3)    ret name(type0 var0, type1 var1, type2 var2, type3 var3)
 Объявляет зарегистрированный метод-обработчик событий с четырьмя аргументами.
 
#define EVENT_HANDLER   EVENT_HANDLER0
 Аналог EVENT_HANDLER0.
 
#define EVENT_VHANDLER0(ret, name)   virtual ret name()
 Объявляет виртуальный зарегистрированный метод-обработчик с сигнатурой virtual ret name().
 
#define EVENT_VHANDLER1(ret, name, type0, var0)   virtual ret name(type0 var0)
 Объявляет виртуальный зарегистрированный метод-обработчик с одним аргументом.
 
#define EVENT_VHANDLER2(ret, name, type0, var0, type1, var1)   virtual ret name(type0 var0, type1 var1)
 Объявляет виртуальный зарегистрированный метод-обработчик с двумя аргументами.
 
#define EVENT_VHANDLER3(ret, name, type0, var0, type1, var1, type2, var2)   virtual ret name(type0 var0, type1 var1, type2 var2)
 Объявляет виртуальный зарегистрированный метод-обработчик с тремя аргументами.
 
#define EVENT_VHANDLER4(ret, name, type0, var0, type1, var1, type2, var2, type3, var3)    virtual ret name(type0 var0, type1 var1, type2 var2, type3 var3)
 Объявляет виртуальный зарегистрированный метод-обработчик с четырьмя аргументами.
 
#define EVENT_VHANDLER   EVENT_VHANDLER0
 Аналог EVENT_VHANDLER0.
 
#define EVENT0(name)   void name();
 Объявляет метод-событие без аргументов.
 
#define EVENT1(name, type0, var0)   void name(type0 var0);
 Объявляет метод-событие с одним аргументом.
 
#define EVENT2(name, type0, var0, type1, var1)   void name(type0 var0, type1 var1);
 Объявляет метод-событие с двумя аргументами.
 
#define EVENT3(name, type0, var0, type1, var1, type2, var2)   void name(type0 var0, type1 var1, type2 var2);
 Объявляет метод-событие с тремя аргументами.
 
#define EVENT4(name, type0, var0, type1, var1, type2, var2, type3, var3)   void name(type0 var0, type1 var1, type2 var2, type3 var3);
 Объявляет метод-событие с четырьмя аргументами.
 
#define EVENT   EVENT0
 Аналог EVENT0.
 
#define RAISE_EVENT0(src, event)
 Совместимый вспомогательный макрос, вызывающий событие "event" у объекта-источника "src".
 
#define RAISE_EVENT1(src, event, v0)
 Совместимый вспомогательный макрос, вызывающий событие "event" с одним аргументом.
 
#define RAISE_EVENT2(src, event, v0, v1)
 Совместимый вспомогательный макрос, вызывающий событие "event" с двумя аргументами.
 
#define RAISE_EVENT3(src, event, v0, v1, v2)
 Совместимый вспомогательный макрос, вызывающий событие "event" с тремя аргументами.
 
#define RAISE_EVENT4(src, event, v0, v1, v2, v3)
 Совместимый вспомогательный макрос, вызывающий событие "event" с четырьмя аргументами.
 
#define CONNECTU(src, event, dest, handler)
 Соединяет событие "event" объекта "src" к обработчику или событию "handler" объекта "dest". Подробнее...
 
#define CONNECTU_QUEUED(src, event, dest, handler, performer)
 Соединяет событие "event" объекта "src" к обработчику или событию "handler" объекта "dest". Подробнее...
 
#define CONNECTL(src, event, functor)
 Соединяет событие "event" объекта "src" к лямбда-функции "functor". Подробнее...
 
#define CONNECT0(ret, src, event, dest, handler)
 Устаревший совместимый макрос, который соединяет событие с зарегистрированным обработчиком через явное указание сигнатуры. Подробнее...
 
#define CONNECT1(ret, type0, src, event, dest, handler)
 Устаревший совместимый макрос для зарегистрированного события или обработчика с одним аргументом. Подробнее...
 
#define CONNECT2(ret, type0, type1, src, event, dest, handler)
 Устаревший совместимый макрос для зарегистрированного события или обработчика с двумя аргументами. Подробнее...
 
#define CONNECT3(ret, type0, type1, type2, src, event, dest, handler)
 Устаревший совместимый макрос для зарегистрированного события или обработчика с тремя аргументами. Подробнее...
 
#define CONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler)
 Устаревший совместимый макрос для зарегистрированного события или обработчика с четырьмя аргументами. Подробнее...
 
#define CONNECT   CONNECT0
 Аналог CONNECT0. Подробнее...
 
#define WEAK_CONNECT0(ret, src, event, dest, handler)
 Устаревший совместимый макрос, который пропускает проверку исходного метода. Подробнее...
 
#define WEAK_CONNECT1(ret, type0, src, event, dest, handler)
 Устаревший совместимый макрос, который пропускает проверку исходного метода для случая с одним аргументом. Подробнее...
 
#define WEAK_CONNECT2(ret, type0, type1, src, event, dest, handler)
 Устаревший совместимый макрос, который пропускает проверку исходного метода для случая с двумя аргументами. Подробнее...
 
#define WEAK_CONNECT3(ret, type0, type1, type2, src, event, dest, handler)
 Устаревший совместимый макрос, который пропускает проверку исходного метода для случая с тремя аргументами. Подробнее...
 
#define WEAK_CONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler)
 Устаревший совместимый макрос, который пропускает проверку исходного метода для случая с четырьмя аргументами. Подробнее...
 
#define WEAK_CONNECT   WEAK_CONNECT0
 Аналог WEAK_CONNECT0. Подробнее...
 
#define DISCONNECT0(ret, src, event, dest, handler)
 Разрывает соединение зарегистрированного события с зарегистрированным обработчиком.
 
#define DISCONNECT1(ret, type0, src, event, dest, handler)
 Разрывает соединение зарегистрированного события с одним аргументом и зарегистрированного обработчика.
 
#define DISCONNECT2(ret, type0, type1, src, event, dest, handler)
 Разрывает соединение зарегистрированного события с двумя аргументами и зарегистрированного обработчика.
 
#define DISCONNECT3(ret, type0, type1, type2, src, event, dest, handler)
 Разрывает соединение зарегистрированного события с тремя аргументами и зарегистрированного обработчика.
 
#define DISCONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler)
 Разрывает соединение зарегистрированного события с четырьмя аргументами и зарегистрированного обработчика.
 
#define DISCONNECT   DISCONNECT0
 Аналог DISCONNECT0.
 
#define HANDLER(handler)
 Низкоуровневый вспомогательный макрос, который разворачивается в точку входа зарегистрированного обработчика.
 

Events

void deleted (PIObject *o)
 Вызывается непосредственно перед уничтожением объекта. Подробнее...
 

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

Базовый класс для объектов, которые объявляют события, обработчики событий и зарегистрированные методы.

PIObject является базовым классом для всех классов PIP, которым необходима событийная коммуникация. Он обеспечивает механизм сигналов-слотов, систему свойств и управление жизненным циклом объектов. PIObject хранит именованные свойства, состояние соединений и небольшую метаобъектную таблицу, которую используют CONNECTU(), execute() и связанные методы. Отложенная доставка выполняется на объекте-исполнителе и требует явного опустошения очереди через callQueuedEvents() или maybeCallQueuedEvents().

События и Обработчики событий

PIObject предоставляет механизм событий и их обработчиков, реализованный без дополнительного препроцессора или метакомпилятора. Любой класс, наследованный от PIObject должен использовать макрос PIOBJECT() сразу после объявления класса для корректной работы.

Событием является сигнал, который может быть вызван как обычный метод в любое время. Это метод, объявленный с помощью макроса EVENT() и не требует описания. Для его вызова просто вызывается метод события.

Обработчик события это метод, объявленный с помощью макроса EVENT_HANDLER() и он требует описания, как и обычный метод. Можно его использовать как обычный метод.

Основной функцией этого механизма является реализация соединений между различными объектами. Её предоставляют макросы CONNECT(), CONNECTU() и CONNECTL(), которые соединяют события одних объектов с обработчиками или событиями других объектов. Каждое событие может быть присоеденино неограниченное количество раз к любым обработчикам.

Пример:

class ObjectA: public PIObject {
PIOBJECT(ObjectA)
public:
EVENT_HANDLER1(void, handlerA, const PIString & , str) {piCoutObj << "handler A:" << str;}
EVENT1(eventA1, const PIString & , str);
EVENT2(eventA2, int, i, float, f);
};
class ObjectB: public PIObject {
PIOBJECT(ObjectB)
public:
EVENT_HANDLER2(void, handlerB, int, i, float, f) {piCoutObj << "handler B:" << i << "," << f;}
EVENT1(eventB, PIString, str);
};
int main(int argc, char * argv[]) {
ObjectA obj_a;
ObjectB obj_b;
CONNECT2(void, int, float, &obj_a, eventA2, &obj_b, handlerB);
obj_a.eventA2(2, 0.5);
CONNECT1(void, PIString, &obj_b, eventB, &obj_a, handlerA);
obj_b.eventB("event to handler");
CONNECTU(&obj_a, eventA1, &obj_b, eventB);
obj_a.eventA1("event to event");
obj_a.piDisconnect("eventA1");
CONNECTL(&obj_a, eventA1, ([](const PIString & str){piCout << str;}));
obj_a.eventA1("event to lambda");
};
Базовый класс для объектов, которые объявляют события, обработчики событий и зарегистрированные метод...
Definition: piobject.h:56
#define CONNECT1(ret, type0, src, event, dest, handler)
Устаревший совместимый макрос для зарегистрированного события или обработчика с одним аргументом.
Definition: piobject_macros.h:261
#define EVENT_HANDLER1(ret, name, type0, var0)
Объявляет зарегистрированный метод-обработчик событий с одним аргументом.
Definition: piobject_macros.h:66
#define EVENT1(name, type0, var0)
Объявляет метод-событие с одним аргументом.
Definition: piobject_macros.h:142
#define piCoutObj
Макрос для условного (piDebug && PIObject::debug()) вывода в PICout(StdOut) для наследников PIObject.
Definition: picout.h:45
#define CONNECTL(src, event, functor)
Соединяет событие "event" объекта "src" к лямбда-функции "functor".
Definition: piobject_macros.h:240
#define CONNECT2(ret, type0, type1, src, event, dest, handler)
Устаревший совместимый макрос для зарегистрированного события или обработчика с двумя аргументами.
Definition: piobject_macros.h:270
#define EVENT2(name, type0, var0, type1, var1)
Объявляет метод-событие с двумя аргументами.
Definition: piobject_macros.h:148
#define EVENT_HANDLER2(ret, name, type0, var0, type1, var1)
Объявляет зарегистрированный метод-обработчик событий с двумя аргументами.
Definition: piobject_macros.h:72
#define CONNECTU(src, event, dest, handler)
Соединяет событие "event" объекта "src" к обработчику или событию "handler" объекта "dest".
Definition: piobject_macros.h:204
#define PIOBJECT(name)
Поместите этот макрос внутрь объявления прямого наследника PIObject, чтобы включить регистрацию событ...
Definition: piobject_macros.h:46
Класс строки.
Definition: pistring.h:42
#define piCout
Definition: picout.h:36
s v file v filter f
Оператор извлечения.
Definition: pivarianttypes.h:414

Результат:

handler B: 2 , 0.5
handler A: event to handler
handler A: event to event
event to lambda

Методы

◆ setProperty()

void PIObject::setProperty ( const char *  name,
const PIVariant value 
)
inline

Устанавливает свойство "name" в значение "value" и создаёт его при необходимости.

После обновления сохранённого значения вызывает propertyChanged().

◆ setThreadSafe()

void PIObject::setThreadSafe ( bool  yes)
inline

Включает или отключает внутренний мьютекс объекта во время выполнения обработчиков.

Этот флаг влияет на прямой и отложенный вызов обработчиков для данного объекта, но не описывает полную потокобезопасность класса.

◆ execute()

bool PIObject::execute ( const PIString method,
const PIVector< PIVariantSimple > &  vl 
)

Выполняет зарегистрированный метод или метод-обработчик по имени с переданными аргументами.

Этот вспомогательный метод работает только с таблицей зарегистрированных методов, построенной из объявлений EVENT_HANDLER*() и EVENT*(). Он не предоставляет произвольную рефлексию и сложное разрешение перегрузок: реализация выбирает подходящий зарегистрированный метод по имени и числу аргументов.

◆ executeQueued()

bool PIObject::executeQueued ( PIObject performer,
const PIString method,
const PIVector< PIVariantSimple > &  vl 
)

Ставит выполнение зарегистрированного метода в очередь объекта-исполнителя.

Доставка происходит только когда "performer" позже вызывает callQueuedEvents() или maybeCallQueuedEvents(). Значения аргументов передаются через PIVariantSimple, поэтому аргументы очереди должны в нём представляться.

◆ maybeCallQueuedEvents()

bool PIObject::maybeCallQueuedEvents ( )
inline

Выполняет отложенные доставки только если этот объект использовался как исполнитель.

Этот помощник дешевле, чем безусловный callQueuedEvents(), для объектов, которые редко используются как исполнители.

◆ deleteLater()

void PIObject::deleteLater ( )

Планирует отложенное удаление объекта.

При первом вызове стартует фоновый поток для удаления объектов. Каждый объект из очереди удаляется только когда выйдет из всех событий и обработок.

◆ deleted()

void PIObject::deleted ( PIObject o)

Вызывается непосредственно перед уничтожением объекта.

Предупреждения

Это событие вызывается из деструктора, поэтому используйте только численное значение "o", не надо кастовать его в другие типы!

◆ emitter()

PIObject * PIObject::emitter ( ) const
inlineprotected

Возвращает объект-источник, который вызвал текущее событие.

Это значение корректно только пока выполняется обработчик события.

Документация по друзьям класса и функциям, относящимся к классу

◆ CONNECTU

#define CONNECTU (   src,
  event,
  dest,
  handler 
)
related

Соединяет событие "event" объекта "src" к обработчику или событию "handler" объекта "dest".

"handler" может принимать только начальную часть аргументов "event". Макрос ищет зарегистрированные методы по имени во время выполнения и возвращает PIObject::Connection.

◆ CONNECTU_QUEUED

#define CONNECTU_QUEUED (   src,
  event,
  dest,
  handler,
  performer 
)
related

Соединяет событие "event" объекта "src" к обработчику или событию "handler" объекта "dest".

"handler" может принимать только начальную часть аргументов "event". Доставка ставится в очередь объекта "performer" и выполняется только когда этот объект вызывает PIObject::callQueuedEvents() или PIObject::maybeCallQueuedEvents(). Все типы аргументов должны быть зарегистрированы с помощью макроса REGISTER_VARIANT(), однако многие стандартные и PIP типы уже там. Возвращает PIObject::Connection.

◆ CONNECTL

#define CONNECTL (   src,
  event,
  functor 
)
related

Соединяет событие "event" объекта "src" к лямбда-функции "functor".

"event" и "functor" должны иметь одинаковый список аргументов. В случае сложной лямбда-функции оберните её в (). Возвращает PIObject::Connection.

◆ CONNECT0

#define CONNECT0 (   ret,
  src,
  event,
  dest,
  handler 
)
related

Устаревший совместимый макрос, который соединяет событие с зарегистрированным обработчиком через явное указание сигнатуры.

Уст.:
Используйте CONNECTU()

Для нового кода предпочитайте CONNECTU().

◆ CONNECT1

#define CONNECT1 (   ret,
  type0,
  src,
  event,
  dest,
  handler 
)
related

Устаревший совместимый макрос для зарегистрированного события или обработчика с одним аргументом.

Уст.:
Используйте CONNECTU()

◆ CONNECT2

#define CONNECT2 (   ret,
  type0,
  type1,
  src,
  event,
  dest,
  handler 
)
related

Устаревший совместимый макрос для зарегистрированного события или обработчика с двумя аргументами.

Уст.:
Используйте CONNECTU()

◆ CONNECT3

#define CONNECT3 (   ret,
  type0,
  type1,
  type2,
  src,
  event,
  dest,
  handler 
)
related

Устаревший совместимый макрос для зарегистрированного события или обработчика с тремя аргументами.

Уст.:
Используйте CONNECTU()

◆ CONNECT4

#define CONNECT4 (   ret,
  type0,
  type1,
  type2,
  type3,
  src,
  event,
  dest,
  handler 
)
related

Устаревший совместимый макрос для зарегистрированного события или обработчика с четырьмя аргументами.

Уст.:
Используйте CONNECTU()

◆ CONNECT

#define CONNECT   CONNECT0
related

Аналог CONNECT0.

Уст.:
Используйте CONNECTU()

◆ WEAK_CONNECT0

#define WEAK_CONNECT0 (   ret,
  src,
  event,
  dest,
  handler 
)
related

Устаревший совместимый макрос, который пропускает проверку исходного метода.

Уст.:
Используйте CONNECTU()

◆ WEAK_CONNECT1

#define WEAK_CONNECT1 (   ret,
  type0,
  src,
  event,
  dest,
  handler 
)
related

Устаревший совместимый макрос, который пропускает проверку исходного метода для случая с одним аргументом.

Уст.:
Используйте CONNECTU()

◆ WEAK_CONNECT2

#define WEAK_CONNECT2 (   ret,
  type0,
  type1,
  src,
  event,
  dest,
  handler 
)
related

Устаревший совместимый макрос, который пропускает проверку исходного метода для случая с двумя аргументами.

Уст.:
Используйте CONNECTU()

◆ WEAK_CONNECT3

#define WEAK_CONNECT3 (   ret,
  type0,
  type1,
  type2,
  src,
  event,
  dest,
  handler 
)
related

Устаревший совместимый макрос, который пропускает проверку исходного метода для случая с тремя аргументами.

Уст.:
Используйте CONNECTU()

◆ WEAK_CONNECT4

#define WEAK_CONNECT4 (   ret,
  type0,
  type1,
  type2,
  type3,
  src,
  event,
  dest,
  handler 
)
related

Устаревший совместимый макрос, который пропускает проверку исходного метода для случая с четырьмя аргументами.

Уст.:
Используйте CONNECTU()

◆ WEAK_CONNECT

#define WEAK_CONNECT   WEAK_CONNECT0
related

Аналог WEAK_CONNECT0.

Уст.:
Используйте CONNECTU()