44 #include "vtkCommonCoreModule.h"
46 #include "vtkSetGet.h"
50 class vtkSubjectHelper;
66 void*
operator new(
size_t tSize);
67 void operator delete(
void* p);
184 template <
class U,
class T>
186 unsigned long event, U observer,
void (T::*callback)(),
float priority = 0.0f)
188 vtkClassMemberCallback<T>* callable =
new vtkClassMemberCallback<T>(observer, callback);
191 return this->AddTemplatedObserver(event, callable,
priority);
193 template <
class U,
class T>
197 vtkClassMemberCallback<T>* callable =
new vtkClassMemberCallback<T>(observer, callback);
200 return this->AddTemplatedObserver(event, callable,
priority);
209 template <
class U,
class T>
213 vtkClassMemberCallback<T>* callable =
new vtkClassMemberCallback<T>(observer, callback);
216 return this->AddTemplatedObserver(event, callable,
priority);
269 class vtkClassMemberCallbackBase
276 virtual bool operator()(
vtkObject*,
unsigned long,
void*) = 0;
277 virtual ~vtkClassMemberCallbackBase() {}
287 class vtkClassMemberHandlerPointer
294 if ((this->VoidPointer =
dynamic_cast<T*
>(o)) ==
nullptr)
297 this->VoidPointer = o;
299 this->WeakPointer = o;
300 this->UseWeakPointer =
true;
302 void operator=(
void* o)
304 this->VoidPointer = o;
305 this->WeakPointer =
nullptr;
306 this->UseWeakPointer =
false;
310 if (this->UseWeakPointer && !this->WeakPointer.GetPointer())
314 return static_cast<T*
>(this->VoidPointer);
329 class vtkClassMemberCallback :
public vtkClassMemberCallbackBase
331 vtkClassMemberHandlerPointer<T> Handler;
332 void (T::*Method1)();
333 void (T::*Method2)(
vtkObject*,
unsigned long,
void*);
334 bool (T::*Method3)(
vtkObject*,
unsigned long,
void*);
337 vtkClassMemberCallback(T* handler,
void (T::*method)())
339 this->Handler = handler;
340 this->Method1 = method;
341 this->Method2 =
nullptr;
342 this->Method3 =
nullptr;
345 vtkClassMemberCallback(T* handler,
void (T::*method)(
vtkObject*,
unsigned long,
void*))
347 this->Handler = handler;
348 this->Method1 =
nullptr;
349 this->Method2 = method;
350 this->Method3 =
nullptr;
353 vtkClassMemberCallback(T* handler,
bool (T::*method)(
vtkObject*,
unsigned long,
void*))
355 this->Handler = handler;
356 this->Method1 =
nullptr;
357 this->Method2 =
nullptr;
358 this->Method3 = method;
360 ~vtkClassMemberCallback()
override {}
363 bool operator()(
vtkObject* caller,
unsigned long event,
void* calldata)
override
365 T* handler = this->Handler.GetPointer();
370 (handler->*this->Method1)();
372 else if (this->Method2)
374 (handler->*this->Method2)(caller, event, calldata);
376 else if (this->Method3)
378 return (handler->*this->Method3)(caller, event, calldata);
390 unsigned long AddTemplatedObserver(
391 unsigned long event, vtkClassMemberCallbackBase* callable,
float priority);
393 friend class vtkObjectCommandInternal;
superclass for callback/observer methods
a simple class to control print indentation
abstract base class for most VTK objects
void operator=(const vtkObjectBase &)
abstract base class for most VTK objects
vtkBaseTypeMacro(vtkObject, vtkObjectBase)
void InternalReleaseFocus()
vtkCommand * GetCommand(unsigned long tag)
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
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 *)
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)
void InternalGrabFocus(vtkCommand *mouseEvents, vtkCommand *keypressEvents=nullptr)
These methods allow a command to exclusively grab all events.
static void SetGlobalWarningDisplay(int val)
This is a global flag that controls whether any debug, warning or error messages are displayed.
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
void RemoveObserver(vtkCommand *)
void RemoveObservers(unsigned long event, vtkCommand *)
int InvokeEvent(unsigned long event)
void UnRegisterInternal(vtkObjectBase *, vtkTypeBool check) override
void RemoveAllObservers()
void RegisterInternal(vtkObjectBase *, vtkTypeBool check) override
static void GlobalWarningDisplayOff()
int InvokeEvent(const char *event, void *callData)
virtual void Modified()
Update the modification time for this object.
vtkTypeBool HasObserver(unsigned long event, vtkCommand *)
int InvokeEvent(unsigned long event, void *callData)
This method invokes an event and return whether the event was aborted or not.
static int GetGlobalWarningDisplay()
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 *)
unsigned long AddObserver(const char *event, vtkCommand *, float priority=0.0f)
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()
bool GetDebug()
Get the value of the debug flag.
virtual vtkMTimeType GetMTime()
Return this object's modified time.
void RemoveObservers(unsigned long event)
int InvokeEvent(const char *event)
void RemoveObserver(unsigned long tag)
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.
record modification and/or execution time
Non-templated superclass for vtkWeakPointer.
vtkTypeUInt32 vtkMTimeType