mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
172 lines
5.4 KiB
C++
172 lines
5.4 KiB
C++
/*=========================================================================
|
|
|
|
Program: ParaView
|
|
Module: vtkSIProxy.h
|
|
|
|
Copyright (c) Kitware, Inc.
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
PURPOSE. See the above copyright notice for more information.
|
|
|
|
=========================================================================*/
|
|
// .NAME vtkSIProxy
|
|
// .SECTION Description
|
|
// vtkSIProxy is the server-implementation for a vtkSMProxy that helps the
|
|
// vtkSMProxy with managing/updating VTK objects.
|
|
|
|
#ifndef vtkSIProxy_h
|
|
#define vtkSIProxy_h
|
|
|
|
#include "vtkPVServerImplementationCoreModule.h" //needed for exports
|
|
#include "vtkSIObject.h"
|
|
#include "vtkSmartPointer.h" // needed for vtkSmartPointer.
|
|
|
|
class vtkAlgorithmOutput;
|
|
class vtkSIProperty;
|
|
class vtkPVXMLElement;
|
|
class vtkSIProxyDefinitionManager;
|
|
|
|
class VTKPVSERVERIMPLEMENTATIONCORE_EXPORT vtkSIProxy : public vtkSIObject
|
|
{
|
|
public:
|
|
static vtkSIProxy* New();
|
|
vtkTypeMacro(vtkSIProxy, vtkSIObject);
|
|
void PrintSelf(ostream& os, vtkIndent indent);
|
|
|
|
// Description:
|
|
// This method is called before the deletion of the SIObject.
|
|
// Basically this is used to remove all dependency with other SIObject so after
|
|
// a first pass on all SIObject with a AboutToDelete() we can simply delete the
|
|
// remaining SIObjects.
|
|
virtual void AboutToDelete();
|
|
|
|
//BTX
|
|
// Description:
|
|
// Push a new state to the underneath implementation
|
|
virtual void Push(vtkSMMessage* msg);
|
|
|
|
// Description:
|
|
// Pull the current state of the underneath implementation
|
|
virtual void Pull(vtkSMMessage* msg);
|
|
//ETX
|
|
|
|
// Description:
|
|
// Returns access to the VTKObject pointer, if any.
|
|
// Note this is a raw pointer to the local instance of the VTK object. Any
|
|
// changes you make directly using this object pointer will not be reflected
|
|
// on other processes.
|
|
vtkObjectBase* GetVTKObject();
|
|
void SetVTKObject(vtkObjectBase*);
|
|
|
|
// Description:
|
|
// Provides access to the property helper.
|
|
vtkSIProperty* GetSIProperty(const char* name);
|
|
|
|
// Description:
|
|
// Returns the VTKClassName.
|
|
vtkGetStringMacro(VTKClassName);
|
|
|
|
// Description:
|
|
// Assigned by the XML parser. The name assigned in the XML
|
|
// configuration. Can be used to figure out the origin of the
|
|
// proxy.
|
|
vtkGetStringMacro(XMLName);
|
|
|
|
// Description:
|
|
// Assigned by the XML parser. The group in the XML configuration that
|
|
// this proxy belongs to. Can be used to figure out the origin of the
|
|
// proxy.
|
|
vtkGetStringMacro(XMLGroup);
|
|
|
|
// Description:
|
|
// Return true if that Proxy is supposed to have NO vtk class, which means
|
|
// its a NullProxy.
|
|
bool IsNullProxy() { return (VTKClassName == NULL); };
|
|
|
|
// Description:
|
|
// These methods are called to add/remove input connections by
|
|
// vtkSIInputProperty. This indirection makes it possible for subclasses to
|
|
// insert VTK-algorithms in the input pipeline.
|
|
virtual void AddInput(int input_port,
|
|
vtkAlgorithmOutput* connection, const char* method);
|
|
virtual void CleanInputs(const char* method);
|
|
|
|
// Description:
|
|
// Triggers UpdateInformation() on vtkObject if possible.
|
|
// Default implementation does pretty much nothing.
|
|
virtual void UpdatePipelineInformation() { }
|
|
|
|
//BTX
|
|
protected:
|
|
vtkSIProxy();
|
|
~vtkSIProxy();
|
|
|
|
// Description:
|
|
// Returns the subproxy helper for the subproxy with the given name, if any.
|
|
vtkSIProxy* GetSubSIProxy(const char* name);
|
|
|
|
// Description:
|
|
// API to iterate over subproxy helpers.
|
|
unsigned int GetNumberOfSubSIProxys();
|
|
vtkSIProxy* GetSubSIProxy(unsigned int cc);
|
|
|
|
// Description:
|
|
// Provides access to the vtkSIProxyDefinitionManager held by the session.
|
|
vtkSIProxyDefinitionManager* GetProxyDefinitionManager();
|
|
|
|
// Description:
|
|
// Creates the VTK objects. This also parses the xml definition for proxy to
|
|
// create property-handlers.
|
|
// Returns true if object are (or have been) created successfully.
|
|
// \c message is used to obtain information about what proxy helper this is if
|
|
// the objects need to be created.
|
|
virtual bool CreateVTKObjects(vtkSMMessage* message);
|
|
void DeleteVTKObjects();
|
|
|
|
// Description;
|
|
// Called in CreateVTKObjects() after the vtk-object has been created and
|
|
// subproxy-information has been processed, but before the XML is parsed to
|
|
// generate properties and initialize their values.
|
|
virtual void OnCreateVTKObjects();
|
|
|
|
// Description:
|
|
// Parses the XML to create property/subproxy helpers.
|
|
virtual bool ReadXMLAttributes(vtkPVXMLElement* element);
|
|
virtual bool ReadXMLProperty(vtkPVXMLElement* property_element);
|
|
virtual bool ReadXMLSubProxy(vtkPVXMLElement* subproxy_element);
|
|
|
|
// Description:
|
|
// Adds a vtkSMProperty's server-implementation.
|
|
void AddSIProperty(const char* name, vtkSIProperty*);
|
|
|
|
vtkSetStringMacro(VTKClassName);
|
|
vtkSetStringMacro(XMLGroup);
|
|
vtkSetStringMacro(XMLName);
|
|
vtkSetStringMacro(XMLSubProxyName);
|
|
vtkSetStringMacro(PostPush);
|
|
vtkSetStringMacro(PostCreation);
|
|
|
|
char* VTKClassName;
|
|
char* XMLGroup;
|
|
char* XMLName;
|
|
char* XMLSubProxyName;
|
|
char* PostPush;
|
|
char* PostCreation;
|
|
|
|
vtkSmartPointer<vtkObjectBase> VTKObject;
|
|
bool ObjectsCreated;
|
|
|
|
private:
|
|
vtkSIProxy(const vtkSIProxy&); // Not implemented
|
|
void operator=(const vtkSIProxy&); // Not implemented
|
|
|
|
class vtkInternals;
|
|
vtkInternals* Internals;
|
|
//ETX
|
|
};
|
|
|
|
#endif
|