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;