44 #include "vtkCommonCoreModule.h" 46 #include "vtkSetGet.h" 50 class vtkSubjectHelper;
66 void*
operator new(
size_t tSize);
67 void operator delete(
void* p);
73 virtual void DebugOn();
78 virtual void DebugOff();
88 void SetDebug(
bool debugFlag);
94 static void BreakOnError();
102 virtual void Modified();
122 static void SetGlobalWarningDisplay(
int val);
125 static int GetGlobalWarningDisplay();
145 void RemoveObservers(
unsigned long event,
vtkCommand*);
146 void RemoveObservers(
const char* event,
vtkCommand*);
151 void RemoveObserver(
unsigned long tag);
152 void RemoveObservers(
unsigned long event);
153 void RemoveObservers(
const char* event);
154 void RemoveAllObservers();
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);
226 int InvokeEvent(
unsigned long event,
void* callData);
227 int InvokeEvent(
const char* event,
void* callData);
255 void InternalReleaseFocus();
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;
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
vtkTypeUInt32 vtkMTimeType
record modification and/or execution time
int InvokeEvent(unsigned long event)
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...