# 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

## Defines

#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()))

## Define 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); \
              else \
                PTRACE(2, "PWLib\tInvalid notifiee"); \
          } \
      }; \
      friend class func##_PSmartNotifier; \
      virtual void func(notifier & note, INT extra)