PTLib  Version 2.10.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
notifier_ext.h File Reference

Go to the source code of this file.

Classes

class  PSmartNotifieeRegistrar
 Implements a function similar to the PNotifier, but uses an "id" to link the caller and callee rather than using a pointer. More...
class  PSmartNotifierFunction
class  PNotifierList

Macros

#define PDECLARE_SMART_NOTIFIEE   PSmartNotifieeRegistrar m_Registrar; \
#define PCREATE_SMART_NOTIFIEE   m_Registrar.Init(this)
#define PDECLARE_SMART_NOTIFIER(notifier, notifiee, func)
#define PCREATE_SMART_NOTIFIER(func)   PNotifier(new func##_PSmartNotifier(m_Registrar.GetID()))

Macro Definition Documentation

#define PCREATE_SMART_NOTIFIEE   m_Registrar.Init(this)
#define PCREATE_SMART_NOTIFIER (   func)    PNotifier(new func##_PSmartNotifier(m_Registrar.GetID()))
#define PDECLARE_SMART_NOTIFIEE   PSmartNotifieeRegistrar m_Registrar; \
#define PDECLARE_SMART_NOTIFIER (   notifier,
  notifiee,
  func 
)
Value:
class func##_PSmartNotifier : public PSmartNotifierFunction { \
public: \
func##_PSmartNotifier(unsigned id) : PSmartNotifierFunction(id) { } \
virtual void Call(PObject & note, INT extra) const \
{ \
void * obj = GetNotifiee(); \
if (obj) \
((notifiee*)obj)->func((notifier &)note, extra); \
PTRACE(2, "PWLib\tInvalid notifiee"); \
} \
}; \
friend class func##_PSmartNotifier; \
virtual void func(notifier & note, INT extra)