vtkSIProxy.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Kitware Inc.
2 // SPDX-License-Identifier: BSD-3-Clause
10 #ifndef vtkSIProxy_h
11 #define vtkSIProxy_h
12 
13 #include "vtkRemotingServerManagerModule.h" //needed for exports
14 #include "vtkSIObject.h"
15 #include "vtkSmartPointer.h" // needed for vtkSmartPointer.
16 
17 class vtkAlgorithmOutput;
18 class vtkSIProperty;
19 class vtkPVXMLElement;
21 
22 class VTKREMOTINGSERVERMANAGER_EXPORT vtkSIProxy : public vtkSIObject
23 {
24 public:
25  static vtkSIProxy* New();
26  vtkTypeMacro(vtkSIProxy, vtkSIObject);
27  void PrintSelf(ostream& os, vtkIndent indent) override;
28 
35  void AboutToDelete() override;
36 
40  void Push(vtkSMMessage* msg) override;
41 
45  void Pull(vtkSMMessage* msg) override;
46 
48 
54  vtkObjectBase* GetVTKObject();
55  void SetVTKObject(vtkObjectBase*);
57 
61  vtkSIProperty* GetSIProperty(const char* name);
62 
64 
67  vtkGetStringMacro(VTKClassName);
69 
71 
76  vtkGetStringMacro(XMLName);
78 
80 
85  vtkGetStringMacro(XMLGroup);
87 
92  bool IsNullProxy() { return (VTKClassName == nullptr); };
93 
95 
100  virtual void AddInput(int input_port, vtkAlgorithmOutput* connection, const char* method);
101  virtual void CleanInputs(const char* method);
103 
108  virtual void UpdatePipelineInformation() {}
109 
113  virtual void RecreateVTKObjects();
114 
119  virtual bool ExtendDefinition(const char* xml);
120 
124  const char* GetLogNameOrDefault();
125 
126 protected:
127  vtkSIProxy();
128  ~vtkSIProxy() override;
129 
134  virtual vtkObjectBase* NewVTKObject(const char* className);
135 
139  vtkSIProxy* GetSubSIProxy(const char* name);
140 
142 
145  unsigned int GetNumberOfSubSIProxys();
146  vtkSIProxy* GetSubSIProxy(unsigned int cc);
148 
152  vtkSIProxyDefinitionManager* GetProxyDefinitionManager();
153 
161  virtual bool CreateVTKObjects();
162 
166  virtual void DeleteVTKObjects();
167 
174  virtual void OnCreateVTKObjects();
175 
180  bool InitializeAndCreateVTKObjects(vtkSMMessage* message);
181 
183 
186  virtual bool ReadXMLAttributes(vtkPVXMLElement* element);
187  virtual bool ReadXMLProperty(vtkPVXMLElement* property_element);
188  virtual bool ReadXMLSubProxy(vtkPVXMLElement* subproxy_element);
190 
194  void AddSIProperty(const char* name, vtkSIProperty*);
195 
196  vtkSetStringMacro(VTKClassName);
197  vtkSetStringMacro(XMLGroup);
198  vtkSetStringMacro(XMLName);
199  vtkSetStringMacro(XMLSubProxyName);
200  vtkSetStringMacro(PostPush);
201  vtkSetStringMacro(PostCreation);
202  vtkGetStringMacro(LogName);
203 
204  void SetLogName(const char* name);
205 
207  char* XMLGroup;
208  char* XMLName;
210  char* PostPush;
213 
216 
217 private:
218  vtkSIProxy(const vtkSIProxy&) = delete;
219  void operator=(const vtkSIProxy&) = delete;
220 
221  class vtkInternals;
222  vtkInternals* Internals;
223 
224  char* LogName;
225  std::string DefaultLogName;
226 };
227 
228 #endif
vtkSIProxy::VTKObject
vtkSmartPointer< vtkObjectBase > VTKObject
Definition: vtkSIProxy.h:214
vtkSIObject::Push
virtual void Push(vtkSMMessage *msg)
Push a new state to the underneath implementation The provided implementation just store the message ...
vtkSIProxy::ObjectsCreated
bool ObjectsCreated
Definition: vtkSIProxy.h:215
vtkSIProxy::NumberOfInputPorts
int NumberOfInputPorts
Definition: vtkSIProxy.h:212
vtkSIObject
Definition: vtkSIObject.h:21
vtkSIProxy
Definition: vtkSIProxy.h:22
vtkSIProxy::XMLGroup
char * XMLGroup
Definition: vtkSIProxy.h:207
vtkSIObject::New
static vtkSIObject * New()
vtkSIProxy::PostPush
char * PostPush
Definition: vtkSIProxy.h:210
vtkSmartPointer< vtkObjectBase >
vtkSIProxy::XMLName
char * XMLName
Definition: vtkSIProxy.h:208
vtkSIProxy::VTKClassName
char * VTKClassName
Definition: vtkSIProxy.h:206
vtkSIProxy::PostCreation
char * PostCreation
Definition: vtkSIProxy.h:211
vtkSIProxy::XMLSubProxyName
char * XMLSubProxyName
Definition: vtkSIProxy.h:209
vtkObjectBase
vtkSIProxyDefinitionManager
object responsible for managing XML proxies definitions
Definition: vtkSIProxyDefinitionManager.h:40
vtkIndent
vtkSMMessage
vtkSmartPointer.h
vtkSIProxy::UpdatePipelineInformation
virtual void UpdatePipelineInformation()
Triggers UpdateInformation() on vtkObject if possible.
Definition: vtkSIProxy.h:108
vtkSIProxy::IsNullProxy
bool IsNullProxy()
Return true if that Proxy is supposed to have NO vtk class, which means its a NullProxy.
Definition: vtkSIProxy.h:92
vtkSIObject::AboutToDelete
virtual void AboutToDelete()
This method is called before the deletion of the SIObject.
Definition: vtkSIObject.h:34
vtkSIObject::Pull
virtual void Pull(vtkSMMessage *msg)
Pull the current state of the underneath implementation The provided implementation update the given ...
vtkPVXMLElement
Definition: vtkPVXMLElement.h:23
vtkSIObject.h
vtkAlgorithmOutput
vtkSIProperty
Definition: vtkSIProperty.h:24
vtkSIObject::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override