50 #include "vtkCommonCoreModule.h"
52 #include "vtkSetGet.h"
56 VTK_ABI_NAMESPACE_BEGIN
57 class vtkSubjectHelper;
73 void*
operator new(
size_t tSize);
74 void operator delete(
void* p);
191 template <
class U,
class T>
193 unsigned long event, U observer,
void (T::*callback)(),
float priority = 0.0f)
195 vtkClassMemberCallback<T>* callable =
new vtkClassMemberCallback<T>(observer, callback);
198 return this->AddTemplatedObserver(event, callable,
priority);
200 template <
class U,
class T>
204 vtkClassMemberCallback<T>* callable =
new vtkClassMemberCallback<T>(observer, callback);
207 return this->AddTemplatedObserver(event, callable,
priority);
216 template <
class U,
class T>
220 vtkClassMemberCallback<T>* callable =
new vtkClassMemberCallback<T>(observer, callback);
223 return this->AddTemplatedObserver(event, callable,
priority);
294 class vtkClassMemberCallbackBase
301 virtual bool operator()(
vtkObject*,
unsigned long,
void*) = 0;
302 virtual ~vtkClassMemberCallbackBase() =
default;
312 class vtkClassMemberHandlerPointer
319 if ((this->VoidPointer =
dynamic_cast<T*
>(o)) ==
nullptr)
322 this->VoidPointer = o;
324 this->WeakPointer = o;
325 this->UseWeakPointer =
true;
327 void operator=(
void* o)
329 this->VoidPointer = o;
330 this->WeakPointer =
nullptr;
331 this->UseWeakPointer =
false;
335 if (this->UseWeakPointer && !this->WeakPointer.GetPointer())
339 return static_cast<T*
>(this->VoidPointer);
354 class vtkClassMemberCallback :
public vtkClassMemberCallbackBase
356 vtkClassMemberHandlerPointer<T> Handler;
357 void (T::*Method1)();
358 void (T::*Method2)(
vtkObject*,
unsigned long,
void*);
359 bool (T::*Method3)(
vtkObject*,
unsigned long,
void*);
362 vtkClassMemberCallback(T* handler,
void (T::*method)())
364 this->Handler = handler;
365 this->Method1 = method;
366 this->Method2 =
nullptr;
367 this->Method3 =
nullptr;
370 vtkClassMemberCallback(T* handler,
void (T::*method)(
vtkObject*,
unsigned long,
void*))
372 this->Handler = handler;
373 this->Method1 =
nullptr;
374 this->Method2 = method;
375 this->Method3 =
nullptr;
378 vtkClassMemberCallback(T* handler,
bool (T::*method)(
vtkObject*,
unsigned long,
void*))
380 this->Handler = handler;
381 this->Method1 =
nullptr;
382 this->Method2 =
nullptr;
383 this->Method3 = method;
385 ~vtkClassMemberCallback()
override =
default;
388 bool operator()(
vtkObject* caller,
unsigned long event,
void* calldata)
override
390 T* handler = this->Handler.GetPointer();
395 (handler->*this->Method1)();
397 else if (this->Method2)
399 (handler->*this->Method2)(caller, event, calldata);
401 else if (this->Method3)
403 return (handler->*this->Method3)(caller, event, calldata);
423 unsigned long AddTemplatedObserver(
424 unsigned long event, vtkClassMemberCallbackBase* callable,
float priority);
426 friend class vtkObjectCommandInternal;
430 VTK_ABI_NAMESPACE_END
superclass for callback/observer methods
a simple class to control print indentation
abstract base class for most VTK objects
virtual void ObjectFinalize()
void operator=(const vtkObjectBase &)
abstract base class for most VTK objects
vtkBaseTypeMacro(vtkObject, vtkObjectBase)
void InternalReleaseFocus()
These methods allow a command to exclusively grab all events.
vtkCommand * GetCommand(unsigned long tag)
Allow people to add/remove/invoke observers (callbacks) to any VTK object.
virtual void DebugOn()
Turn debugging output on.
vtkTypeBool HasObserver(unsigned long event)
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void RemoveObservers(const char *event)
vtkSubjectHelper * SubjectHelper
std::string GetObjectDescription() const override
The object description printed in messages and PrintSelf output.
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, 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.
vtkTypeBool HasObserver(const char *event, vtkCommand *)
Allow people to add/remove/invoke observers (callbacks) to any VTK object.
virtual void DebugOff()
Turn debugging output off.
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.
vtkTypeBool InvokeEvent(unsigned long event)
void InternalGrabFocus(vtkCommand *mouseEvents, vtkCommand *keypressEvents=nullptr)
These methods allow a command to exclusively grab all events.
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
void RemoveObserver(vtkCommand *)
Allow people to add/remove/invoke observers (callbacks) to any VTK object.
void RemoveObservers(unsigned long event, vtkCommand *)
Allow people to add/remove/invoke observers (callbacks) to any VTK object.
virtual std::string GetObjectName() const
Set/get the name of this object for reporting purposes.
void UnRegisterInternal(vtkObjectBase *, vtkTypeBool check) override
void RemoveAllObservers()
void RegisterInternal(vtkObjectBase *, vtkTypeBool check) override
vtkTypeBool InvokeEvent(const char *event)
static void GlobalWarningDisplayOff()
This is a global flag that controls whether any debug, warning or error messages are displayed.
virtual void Modified()
Update the modification time for this object.
vtkTypeBool HasObserver(unsigned long event, vtkCommand *)
Allow people to add/remove/invoke observers (callbacks) to any VTK object.
vtkTypeBool InvokeEvent(unsigned long event, void *callData)
This method invokes an event and return whether the event was aborted or not.
unsigned long AddObserver(unsigned long event, vtkCommand *, float priority=0.0f)
Allow people to add/remove/invoke observers (callbacks) to any VTK object.
void RemoveObservers(const char *event, vtkCommand *)
Allow people to add/remove/invoke observers (callbacks) to any VTK object.
unsigned long AddObserver(const char *event, vtkCommand *, float priority=0.0f)
Allow people to add/remove/invoke observers (callbacks) to any VTK object.
void SetDebug(bool debugFlag)
Set the value of the debug flag.
vtkTypeBool HasObserver(const char *event)
static void BreakOnError()
This method is called when vtkErrorMacro executes.
static void GlobalWarningDisplayOn()
This is a global flag that controls whether any debug, warning or error messages are displayed.
bool GetDebug()
Get the value of the debug flag.
virtual vtkMTimeType GetMTime()
Return this object's modified time.
void RemoveObservers(unsigned long event)
virtual void SetObjectName(const std::string &objectName)
Set/get the name of this object for reporting purposes.
void RemoveObserver(unsigned long tag)
static vtkTypeBool GetGlobalWarningDisplay()
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.
vtkTypeBool InvokeEvent(const char *event, void *callData)
This method invokes an event and return whether the event was aborted or not.
record modification and/or execution time
Non-templated superclass for vtkWeakPointer.
vtkTypeUInt32 vtkMTimeType