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);
249 virtual void SetObjectName(
const std::string& objectName);
282 void InternalReleaseFocus();
296 class vtkClassMemberCallbackBase
303 virtual bool operator()(
vtkObject*,
unsigned long,
void*) = 0;
304 virtual ~vtkClassMemberCallbackBase() =
default;
314 class vtkClassMemberHandlerPointer
321 if ((this->VoidPointer = dynamic_cast<T*>(o)) ==
nullptr)
324 this->VoidPointer = o;
326 this->WeakPointer = o;
327 this->UseWeakPointer =
true;
329 void operator=(
void* o)
331 this->VoidPointer = o;
332 this->WeakPointer =
nullptr;
333 this->UseWeakPointer =
false;
337 if (this->UseWeakPointer && !this->WeakPointer.GetPointer())
341 return static_cast<T*
>(this->VoidPointer);
356 class vtkClassMemberCallback :
public vtkClassMemberCallbackBase
358 vtkClassMemberHandlerPointer<T> Handler;
359 void (T::*Method1)();
360 void (T::*Method2)(
vtkObject*,
unsigned long,
void*);
361 bool (T::*Method3)(
vtkObject*,
unsigned long,
void*);
364 vtkClassMemberCallback(T* handler,
void (T::*method)())
366 this->Handler = handler;
367 this->Method1 = method;
368 this->Method2 =
nullptr;
369 this->Method3 =
nullptr;
372 vtkClassMemberCallback(T* handler,
void (T::*method)(
vtkObject*,
unsigned long,
void*))
374 this->Handler = handler;
375 this->Method1 =
nullptr;
376 this->Method2 = method;
377 this->Method3 =
nullptr;
380 vtkClassMemberCallback(T* handler,
bool (T::*method)(
vtkObject*,
unsigned long,
void*))
382 this->Handler = handler;
383 this->Method1 =
nullptr;
384 this->Method2 =
nullptr;
385 this->Method3 = method;
387 ~vtkClassMemberCallback()
override =
default;
390 bool operator()(
vtkObject* caller,
unsigned long event,
void* calldata)
override
392 T* handler = this->Handler.GetPointer();
397 (handler->*this->Method1)();
399 else if (this->Method2)
401 (handler->*this->Method2)(caller, event, calldata);
403 else if (this->Method3)
405 return (handler->*this->Method3)(caller, event, calldata);
425 unsigned long AddTemplatedObserver(
426 unsigned long event, vtkClassMemberCallbackBase* callable,
float priority);
428 friend class vtkObjectCommandInternal;
unsigned long AddObserver(unsigned long event, U observer, void(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
Overloads to AddObserver that allow developers to add class member functions as callbacks for events...
static vtkObjectBase * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
abstract base class for most VTK objects
virtual void ObjectFinalize()
vtkTypeUInt32 vtkMTimeType
record modification and/or execution time
int InvokeEvent(unsigned long event)
virtual std::string GetObjectDescription() const
The object description printed in messages and PrintSelf output.
virtual void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
static void GlobalWarningDisplayOff()
This is a global flag that controls whether any debug, warning or error messages are displayed...
unsigned long AddObserver(unsigned long event, U observer, bool(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
Allow user to set the AbortFlagOn() with the return value of the callback method. ...
superclass for callback/observer methods
static void SetGlobalWarningDisplay(int val)
This is a global flag that controls whether any debug, warning or error messages are displayed...
a simple class to control print indentation
virtual void UnRegisterInternal(vtkObjectBase *, vtkTypeBool check)
Non-templated superclass for vtkWeakPointer.
abstract base class for most VTK objects
virtual void RegisterInternal(vtkObjectBase *, vtkTypeBool check)
int InvokeEvent(const char *event)
unsigned long AddObserver(unsigned long event, U observer, void(T::*callback)(), float priority=0.0f)
Overloads to AddObserver that allow developers to add class member functions as callbacks for events...
void operator=(const vtkObjectBase &)
vtkSubjectHelper * SubjectHelper
static void GlobalWarningDisplayOn()
This is a global flag that controls whether any debug, warning or error messages are displayed...