50#include "vtkCommonCoreModule.h"
56class vtkSubjectHelper;
72 void*
operator new(
size_t tSize );
73 void operator delete(
void* p );
193 template <
class U,
class T>
195 U observer,
void (T::*callback)(),
float priority=0.0f)
197 vtkClassMemberCallback<T> *callable =
198 new vtkClassMemberCallback<T>(observer, callback);
201 return this->AddTemplatedObserver(event, callable,
priority);
203 template <
class U,
class T>
205 U observer,
void (T::*callback)(
vtkObject*,
unsigned long,
void*),
208 vtkClassMemberCallback<T> *callable =
209 new vtkClassMemberCallback<T>(observer, callback);
212 return this->AddTemplatedObserver(event, callable,
priority);
221 template <
class U,
class T>
223 U observer,
bool (T::*callback)(
vtkObject*,
unsigned long,
void*),
226 vtkClassMemberCallback<T> *callable =
227 new vtkClassMemberCallback<T>(observer, callback);
230 return this->AddTemplatedObserver(event, callable,
priority);
257 vtkSubjectHelper *SubjectHelper;
269 void InternalReleaseFocus();
274 void operator=(const
vtkObject&) VTK_DELETE_FUNCTION;
283 class vtkClassMemberCallbackBase
290 virtual bool operator()(
vtkObject*,
unsigned long,
void*) = 0;
291 virtual ~vtkClassMemberCallbackBase(){}
301 class vtkClassMemberHandlerPointer
308 if ((this->VoidPointer =
dynamic_cast<T*
>(o)) == 0)
311 this->VoidPointer = o;
313 this->WeakPointer = o;
314 this->UseWeakPointer =
true;
316 void operator=(
void *o)
318 this->VoidPointer = o;
319 this->WeakPointer = 0;
320 this->UseWeakPointer =
false;
324 if (this->UseWeakPointer && !this->WeakPointer.GetPointer())
328 return static_cast<T*
>(this->VoidPointer);
342 class vtkClassMemberCallback :
public vtkClassMemberCallbackBase
344 vtkClassMemberHandlerPointer<T> Handler;
345 void (T::*Method1)();
346 void (T::*Method2)(
vtkObject*,
unsigned long,
void*);
347 bool (T::*Method3)(
vtkObject*,
unsigned long,
void*);
351 vtkClassMemberCallback(T* handler,
void (T::*method)())
353 this->Handler = handler;
354 this->Method1 = method;
355 this->Method2 = NULL;
356 this->Method3 = NULL;
359 vtkClassMemberCallback(
360 T* handler,
void (T::*method)(
vtkObject*,
unsigned long,
void*))
362 this->Handler = handler;
363 this->Method1 = NULL;
364 this->Method2 = method;
365 this->Method3 = NULL;
368 vtkClassMemberCallback(
369 T* handler,
bool (T::*method)(
vtkObject*,
unsigned long,
void*))
371 this->Handler = handler;
372 this->Method1 = NULL;
373 this->Method2 = NULL;
374 this->Method3 = method;
376 ~vtkClassMemberCallback() VTK_OVERRIDE { }
380 vtkObject* caller,
unsigned long event,
void* calldata) VTK_OVERRIDE
382 T *handler = this->Handler.GetPointer();
387 (handler->*this->Method1)();
389 else if (this->Method2)
391 (handler->*this->Method2)(caller, event, calldata);
393 else if (this->Method3)
395 return (handler->*this->Method3)(caller, event, calldata);
406 unsigned long AddTemplatedObserver(
407 unsigned long event, vtkClassMemberCallbackBase* callable,
float priority);
409 friend class vtkObjectCommandInternal;
superclass for callback/observer methods
a simple class to control print indentation
abstract base class for most VTK objects
abstract base class for most VTK objects
vtkBaseTypeMacro(vtkObject, vtkObjectBase)
virtual void DebugOn()
Turn debugging output on.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void RemoveObservers(const char *event)
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.
int HasObserver(unsigned long 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)
int HasObserver(unsigned long event)
static void SetGlobalWarningDisplay(int val)
This is a global flag that controls whether any debug, warning or error messages are displayed.
void RemoveObserver(vtkCommand *)
void RemoveObservers(unsigned long event, vtkCommand *)
int InvokeEvent(unsigned long event)
void RemoveAllObservers()
int HasObserver(const char *event)
static void GlobalWarningDisplayOff()
int InvokeEvent(const char *event, void *callData)
virtual void Modified()
Update the modification time for this object.
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.
int HasObserver(const char *event, vtkCommand *)
void RemoveObservers(const char *event, vtkCommand *)
unsigned long AddObserver(const char *event, vtkCommand *, float priority=0.0f)
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
void SetDebug(bool debugFlag)
Set the value of the debug flag.
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.
vtkCommand * GetCommand(unsigned long tag)
record modification and/or execution time
Non-templated superclass for vtkWeakPointer.
vtkTypeUInt64 vtkMTimeType