41 #include "vtkCommonCoreModule.h"
43 #include "vtkSetGet.h"
48 VTK_ABI_NAMESPACE_BEGIN
49 class vtkSubjectHelper;
65 void*
operator new(
size_t tSize);
66 void operator delete(
void* p);
72 virtual void DebugOn();
77 virtual void DebugOff();
89 void SetDebug(
bool debugFlag);
95 static void BreakOnError();
103 virtual void Modified();
124 static void SetGlobalWarningDisplay(
vtkTypeBool val);
147 void RemoveObservers(
unsigned long event,
vtkCommand*);
148 void RemoveObservers(
const char* event,
vtkCommand*);
153 void RemoveObserver(
unsigned long tag);
154 void RemoveObservers(
unsigned long event);
155 void RemoveObservers(
const char* event);
156 void RemoveAllObservers();
186 template <
class U,
class T>
188 unsigned long event, U observer,
void (T::*callback)(),
float priority = 0.0f)
190 vtkClassMemberCallback<T>* callable =
new vtkClassMemberCallback<T>(observer, callback);
193 return this->AddTemplatedObserver(event, callable,
priority);
195 template <
class U,
class T>
199 vtkClassMemberCallback<T>* callable =
new vtkClassMemberCallback<T>(observer, callback);
202 return this->AddTemplatedObserver(event, callable,
priority);
211 template <
class U,
class T>
215 vtkClassMemberCallback<T>* callable =
new vtkClassMemberCallback<T>(observer, callback);
218 return this->AddTemplatedObserver(event, callable,
priority);
228 vtkTypeBool InvokeEvent(
unsigned long event,
void* callData);
229 vtkTypeBool InvokeEvent(
const char* event,
void* callData);
242 virtual void SetObjectName(
const std::string& objectName);
275 void InternalReleaseFocus();
289 class vtkClassMemberCallbackBase
296 virtual bool operator()(
vtkObject*,
unsigned long,
void*) = 0;
297 virtual ~vtkClassMemberCallbackBase() =
default;
307 class vtkClassMemberHandlerPointer
314 if ((this->VoidPointer = dynamic_cast<T*>(o)) ==
nullptr)
317 this->VoidPointer = o;
319 this->WeakPointer = o;
320 this->UseWeakPointer =
true;
322 void operator=(
void* o)
324 this->VoidPointer = o;
325 this->WeakPointer =
nullptr;
326 this->UseWeakPointer =
false;
330 if (this->UseWeakPointer && !this->WeakPointer.GetPointer())
334 return static_cast<T*
>(this->VoidPointer);
349 class vtkClassMemberCallback :
public vtkClassMemberCallbackBase
351 vtkClassMemberHandlerPointer<T> Handler;
352 void (T::*Method1)();
353 void (T::*Method2)(
vtkObject*,
unsigned long,
void*);
354 bool (T::*Method3)(
vtkObject*,
unsigned long,
void*);
357 vtkClassMemberCallback(T* handler,
void (T::*method)())
359 this->Handler = handler;
360 this->Method1 = method;
361 this->Method2 =
nullptr;
362 this->Method3 =
nullptr;
365 vtkClassMemberCallback(T* handler,
void (T::*method)(
vtkObject*,
unsigned long,
void*))
367 this->Handler = handler;
368 this->Method1 =
nullptr;
369 this->Method2 = method;
370 this->Method3 =
nullptr;
373 vtkClassMemberCallback(T* handler,
bool (T::*method)(
vtkObject*,
unsigned long,
void*))
375 this->Handler = handler;
376 this->Method1 =
nullptr;
377 this->Method2 =
nullptr;
378 this->Method3 = method;
380 ~vtkClassMemberCallback()
override =
default;
383 bool operator()(
vtkObject* caller,
unsigned long event,
void* calldata)
override
385 T* handler = this->Handler.GetPointer();
390 (handler->*this->Method1)();
392 else if (this->Method2)
394 (handler->*this->Method2)(caller, event, calldata);
396 else if (this->Method3)
398 return (handler->*this->Method3)(caller, event, calldata);
418 unsigned long AddTemplatedObserver(
419 unsigned long event, vtkClassMemberCallbackBase* callable,
float priority);
421 friend class vtkObjectCommandInternal;
425 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
#define VTK_MARSHALGETTER(property)
virtual void UnRegisterInternal(vtkObjectBase *, vtkTypeBool check)
Non-templated superclass for vtkWeakPointer.
abstract base class for most VTK objects
virtual void RegisterInternal(vtkObjectBase *, vtkTypeBool check)
#define VTK_MARSHALEXCLUDE(reason)
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...
#define VTK_MARSHAL_EXCLUDE_REASON_IS_INTERNAL