41 #include "vtkCommonCoreModule.h"
43 #include "vtkSetGet.h"
47 VTK_ABI_NAMESPACE_BEGIN
48 class vtkSubjectHelper;
64 void*
operator new(
size_t tSize);
65 void operator delete(
void* p);
71 virtual void DebugOn();
76 virtual void DebugOff();
86 void SetDebug(
bool debugFlag);
92 static void BreakOnError();
100 virtual void Modified();
120 static void SetGlobalWarningDisplay(
vtkTypeBool val);
143 void RemoveObservers(
unsigned long event,
vtkCommand*);
144 void RemoveObservers(
const char* event,
vtkCommand*);
149 void RemoveObserver(
unsigned long tag);
150 void RemoveObservers(
unsigned long event);
151 void RemoveObservers(
const char* event);
152 void RemoveAllObservers();
182 template <
class U,
class T>
184 unsigned long event, U observer,
void (T::*callback)(),
float priority = 0.0f)
186 vtkClassMemberCallback<T>* callable =
new vtkClassMemberCallback<T>(observer, callback);
189 return this->AddTemplatedObserver(event, callable,
priority);
191 template <
class U,
class T>
195 vtkClassMemberCallback<T>* callable =
new vtkClassMemberCallback<T>(observer, callback);
198 return this->AddTemplatedObserver(event, callable,
priority);
207 template <
class U,
class T>
211 vtkClassMemberCallback<T>* callable =
new vtkClassMemberCallback<T>(observer, callback);
214 return this->AddTemplatedObserver(event, callable,
priority);
224 vtkTypeBool InvokeEvent(
unsigned long event,
void* callData);
225 vtkTypeBool InvokeEvent(
const char* event,
void* callData);
238 virtual void SetObjectName(
const std::string& objectName);
271 void InternalReleaseFocus();
285 class vtkClassMemberCallbackBase
292 virtual bool operator()(
vtkObject*,
unsigned long,
void*) = 0;
293 virtual ~vtkClassMemberCallbackBase() =
default;
303 class vtkClassMemberHandlerPointer
310 if ((this->VoidPointer = dynamic_cast<T*>(o)) ==
nullptr)
313 this->VoidPointer = o;
315 this->WeakPointer = o;
316 this->UseWeakPointer =
true;
318 void operator=(
void* o)
320 this->VoidPointer = o;
321 this->WeakPointer =
nullptr;
322 this->UseWeakPointer =
false;
326 if (this->UseWeakPointer && !this->WeakPointer.GetPointer())
330 return static_cast<T*
>(this->VoidPointer);
345 class vtkClassMemberCallback :
public vtkClassMemberCallbackBase
347 vtkClassMemberHandlerPointer<T> Handler;
348 void (T::*Method1)();
349 void (T::*Method2)(
vtkObject*,
unsigned long,
void*);
350 bool (T::*Method3)(
vtkObject*,
unsigned long,
void*);
353 vtkClassMemberCallback(T* handler,
void (T::*method)())
355 this->Handler = handler;
356 this->Method1 = method;
357 this->Method2 =
nullptr;
358 this->Method3 =
nullptr;
361 vtkClassMemberCallback(T* handler,
void (T::*method)(
vtkObject*,
unsigned long,
void*))
363 this->Handler = handler;
364 this->Method1 =
nullptr;
365 this->Method2 = method;
366 this->Method3 =
nullptr;
369 vtkClassMemberCallback(T* handler,
bool (T::*method)(
vtkObject*,
unsigned long,
void*))
371 this->Handler = handler;
372 this->Method1 =
nullptr;
373 this->Method2 =
nullptr;
374 this->Method3 = method;
376 ~vtkClassMemberCallback()
override =
default;
379 bool operator()(
vtkObject* caller,
unsigned long event,
void* calldata)
override
381 T* handler = this->Handler.GetPointer();
386 (handler->*this->Method1)();
388 else if (this->Method2)
390 (handler->*this->Method2)(caller, event, calldata);
392 else if (this->Method3)
394 return (handler->*this->Method3)(caller, event, calldata);
414 unsigned long AddTemplatedObserver(
415 unsigned long event, vtkClassMemberCallbackBase* callable,
float priority);
417 friend class vtkObjectCommandInternal;
421 VTK_ABI_NAMESPACE_END
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
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
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)
static void SetGlobalWarningDisplay(vtkTypeBool val)
This is a global flag that controls whether any debug, warning or error messages are displayed...
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
vtkTypeBool InvokeEvent(unsigned long event)
vtkTypeBool InvokeEvent(const char *event)
static void GlobalWarningDisplayOn()
This is a global flag that controls whether any debug, warning or error messages are displayed...