Базовый класс для объектов, которые объявляют события, обработчики событий и зарегистрированные методы.
Подробнее...
|
|
| 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 PIObject * | findByName (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++ для метаданных зарегистрированных методов.
|
| |
|
(не члены класса)
|
|
#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) |
| | Низкоуровневый вспомогательный макрос, который разворачивается в точку входа зарегистрированного обработчика.
|
| |
Базовый класс для объектов, которые объявляют события, обработчики событий и зарегистрированные методы.
PIObject является базовым классом для всех классов PIP, которым необходима событийная коммуникация. Он обеспечивает механизм сигналов-слотов, систему свойств и управление жизненным циклом объектов. PIObject хранит именованные свойства, состояние соединений и небольшую метаобъектную таблицу, которую используют CONNECTU(), execute() и связанные методы. Отложенная доставка выполняется на объекте-исполнителе и требует явного опустошения очереди через callQueuedEvents() или maybeCallQueuedEvents().
События и Обработчики событий
PIObject предоставляет механизм событий и их обработчиков, реализованный без дополнительного препроцессора или метакомпилятора. Любой класс, наследованный от PIObject должен использовать макрос PIOBJECT() сразу после объявления класса для корректной работы.
Событием является сигнал, который может быть вызван как обычный метод в любое время. Это метод, объявленный с помощью макроса EVENT() и не требует описания. Для его вызова просто вызывается метод события.
Обработчик события это метод, объявленный с помощью макроса EVENT_HANDLER() и он требует описания, как и обычный метод. Можно его использовать как обычный метод.
Основной функцией этого механизма является реализация соединений между различными объектами. Её предоставляют макросы CONNECT(), CONNECTU() и CONNECTL(), которые соединяют события одних объектов с обработчиками или событиями других объектов. Каждое событие может быть присоеденино неограниченное количество раз к любым обработчикам.
- CONNECT() семейство макросов работает с явными наследниками PIObject, и проверяет соединение во время компиляции
- CONNECTU() макрос может работать с неявными наследниками PIObject, и проверяет соединение во время исполнения
- CONNECTU_QUEUED() макрос подобен CONNECTU(), но планирует вызов обработчика у объекта performer вместо прямого вызова
- CONNECTL() макрос может работать с неявными наследниками PIObject и лямбда-функцией
Пример:
public:
};
public:
};
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);
obj_b.eventB("event to handler");
CONNECTU(&obj_a, eventA1, &obj_b, eventB);
obj_a.eventA1("event to event");
obj_a.piDisconnect("eventA1");
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