53 #include "vtkCommonCoreModule.h"  
   55 #include "vtkSetGet.h" 
   59 class vtkSubjectHelper;
 
   75   void* 
operator new(
size_t tSize);
 
   76   void operator delete(
void* p);
 
   82   virtual void DebugOn();
 
   87   virtual void DebugOff();
 
   97   void SetDebug(
bool debugFlag);
 
  103   static void BreakOnError();
 
  111   virtual void Modified();
 
  131   static void SetGlobalWarningDisplay(
int val);
 
  134   static int GetGlobalWarningDisplay();
 
  154   void RemoveObservers(
unsigned long event, 
vtkCommand*);
 
  155   void RemoveObservers(
const char* event, 
vtkCommand*);
 
  160   void RemoveObserver(
unsigned long tag);
 
  161   void RemoveObservers(
unsigned long event);
 
  162   void RemoveObservers(
const char* event);
 
  163   void RemoveAllObservers(); 
 
  193   template <
class U, 
class T>
 
  195     unsigned long event, U observer, 
void (T::*callback)(), 
float priority = 0.0f)
 
  197     vtkClassMemberCallback<T>* callable = 
new vtkClassMemberCallback<T>(observer, callback);
 
  200     return this->AddTemplatedObserver(event, callable, 
priority);
 
  202   template <
class U, 
class T>
 
  206     vtkClassMemberCallback<T>* callable = 
new vtkClassMemberCallback<T>(observer, callback);
 
  209     return this->AddTemplatedObserver(event, callable, 
priority);
 
  218   template <
class U, 
class T>
 
  222     vtkClassMemberCallback<T>* callable = 
new vtkClassMemberCallback<T>(observer, callback);
 
  225     return this->AddTemplatedObserver(event, callable, 
priority);
 
  235   int InvokeEvent(
unsigned long event, 
void* callData);
 
  236   int InvokeEvent(
const char* event, 
void* callData);
 
  264   void InternalReleaseFocus();
 
  278   class vtkClassMemberCallbackBase
 
  285     virtual bool operator()(
vtkObject*, 
unsigned long, 
void*) = 0;
 
  286     virtual ~vtkClassMemberCallbackBase() {}
 
  296   class vtkClassMemberHandlerPointer
 
  303       if ((this->VoidPointer = 
dynamic_cast<T*
>(o)) == 
nullptr)
 
  306         this->VoidPointer = o;
 
  308       this->WeakPointer = o;
 
  309       this->UseWeakPointer = 
true;
 
  311     void operator=(
void* o)
 
  313       this->VoidPointer = o;
 
  314       this->WeakPointer = 
nullptr;
 
  315       this->UseWeakPointer = 
false;
 
  319       if (this->UseWeakPointer && !this->WeakPointer.GetPointer())
 
  323       return static_cast<T*
>(this->VoidPointer);
 
  338   class vtkClassMemberCallback : 
public vtkClassMemberCallbackBase
 
  340     vtkClassMemberHandlerPointer<T> Handler;
 
  341     void (T::*Method1)();
 
  342     void (T::*Method2)(
vtkObject*, 
unsigned long, 
void*);
 
  343     bool (T::*Method3)(
vtkObject*, 
unsigned long, 
void*);
 
  346     vtkClassMemberCallback(T* handler, 
void (T::*method)())
 
  348       this->Handler = handler;
 
  349       this->Method1 = method;
 
  350       this->Method2 = 
nullptr;
 
  351       this->Method3 = 
nullptr;
 
  354     vtkClassMemberCallback(T* handler, 
void (T::*method)(
vtkObject*, 
unsigned long, 
void*))
 
  356       this->Handler = handler;
 
  357       this->Method1 = 
nullptr;
 
  358       this->Method2 = method;
 
  359       this->Method3 = 
nullptr;
 
  362     vtkClassMemberCallback(T* handler, 
bool (T::*method)(
vtkObject*, 
unsigned long, 
void*))
 
  364       this->Handler = handler;
 
  365       this->Method1 = 
nullptr;
 
  366       this->Method2 = 
nullptr;
 
  367       this->Method3 = method;
 
  369     ~vtkClassMemberCallback()
 override {}
 
  372     bool operator()(
vtkObject* caller, 
unsigned long event, 
void* calldata)
 override 
  374       T* handler = this->Handler.GetPointer();
 
  379           (handler->*this->Method1)();
 
  381         else if (this->Method2)
 
  383           (handler->*this->Method2)(caller, event, calldata);
 
  385         else if (this->Method3)
 
  387           return (handler->*this->Method3)(caller, event, calldata);
 
  399   unsigned long AddTemplatedObserver(
 
  400     unsigned long event, vtkClassMemberCallbackBase* callable, 
float priority);
 
  402   friend class vtkObjectCommandInternal;