ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
vtkMemberFunctionCommand.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #include "vtkCommand.h"
9 
10 template <class ClassT>
11 class vtkMemberFunctionCommand : public vtkCommand {
13 
14 public:
15  typedef vtkCommand Superclass;
16 
17  const char* GetClassNameInternal() const override {
18  return "vtkMemberFunctionCommand";
19  }
20 
21  static ThisT* SafeDownCast(vtkObjectBase* o) {
22  return dynamic_cast<ThisT*>(o);
23  }
24 
25  static ThisT* New() { return new ThisT(); }
26 
27  void PrintSelf(ostream& os, vtkIndent indent) override {
28  vtkCommand::PrintSelf(os, indent);
29  }
30 
32 
36  void SetCallback(ClassT& object, void (ClassT::*method)()) {
37  this->Object = &object;
38  this->Method = method;
39  }
41 
42  void SetCallback(ClassT& object,
43  void (ClassT::*method2)(vtkObject*,
44  unsigned long,
45  void*)) {
46  this->Object = &object;
47  this->Method2 = method2;
48  }
49 
50  void Execute(vtkObject* caller,
51  unsigned long event,
52  void* calldata) override {
53  if (this->Object && this->Method) {
54  (this->Object->*this->Method)();
55  }
56  if (this->Object && this->Method2) {
57  (this->Object->*this->Method2)(caller, event, calldata);
58  }
59  }
60  void Reset() {
61  this->Object = 0;
62  this->Method2 = 0;
63  this->Method = 0;
64  }
65 
66 private:
68  this->Object = 0;
69  this->Method = 0;
70  this->Method2 = 0;
71  }
72 
73  ~vtkMemberFunctionCommand() override {}
74 
75  ClassT* Object;
76  void (ClassT::*Method)();
77  void (ClassT::*Method2)(vtkObject* caller,
78  unsigned long event,
79  void* calldata);
80 
82  void operator=(const vtkMemberFunctionCommand&) = delete;
83 };
84 
100 template <class ClassT>
102  ClassT& object, void (ClassT::*method)()) {
105  result->SetCallback(object, method);
106  return result;
107 }
108 
109 template <class ClassT>
111  ClassT& object,
112  void (ClassT::*method)(vtkObject*, unsigned long, void*)) {
115  result->SetCallback(object, method);
116  return result;
117 }
118 //-----------------------------------------------------------------------------
119 // VTK-HeaderTest-Exclude: vtkMemberFunctionCommand.h
MouseEvent event
core::Tensor result
Definition: VtkUtils.cpp:76
static ThisT * SafeDownCast(vtkObjectBase *o)
void PrintSelf(ostream &os, vtkIndent indent) override
void SetCallback(ClassT &object, void(ClassT::*method2)(vtkObject *, unsigned long, void *))
void Execute(vtkObject *caller, unsigned long event, void *calldata) override
void SetCallback(ClassT &object, void(ClassT::*method)())
vtkMemberFunctionCommand< ClassT > * vtkMakeMemberFunctionCommand(ClassT &object, void(ClassT::*method)())