Files
ThirdParty-6/ParaView-5.0.1/ParaViewCore/ServerImplementation/Core/vtkSIProxyProperty.h

117 lines
3.9 KiB
C++

/*=========================================================================
Program: ParaView
Module: vtkSIProxyProperty.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 vtkSIProxyProperty
// .SECTION Description
// ServerSide Property use to set Object array as method argument.
// Those object could be either SMProxy instance or their SIProxy instance
// or the VTK object managed by the SIProxy instance. The type of object is
// specified inside the XML definition of the property with the attribute
// argument_type=[VTK, SMProxy, SIProxy].
#ifndef vtkSIProxyProperty_h
#define vtkSIProxyProperty_h
#include "vtkPVServerImplementationCoreModule.h" //needed for exports
#include "vtkSIProperty.h"
class VTKPVSERVERIMPLEMENTATIONCORE_EXPORT vtkSIProxyProperty : public vtkSIProperty
{
public:
static vtkSIProxyProperty* New();
vtkTypeMacro(vtkSIProxyProperty, vtkSIProperty);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Command that can be used to remove inputs. If set, this
// command is called before the main Command is called with
// all the arguments.
vtkGetStringMacro(CleanCommand);
// Description:
// Remove command is the command called to remove the VTK
// object on the server-side. If set, CleanCommand is ignored.
// Instead for every proxy that was absent from the proxies
// previously pushed, the RemoveCommand is invoked.
vtkGetStringMacro(RemoveCommand);
// When set to true, the property will push a NULL i.e. 0 when there are no
// proxies in the property. Not used when CleanCommand or RemoveCommand is
// set. Default is false.
vtkGetMacro(NullOnEmpty, bool);
//BTX
protected:
vtkSIProxyProperty();
~vtkSIProxyProperty();
// Description:
// Push a new state to the underneath implementation
virtual bool Push(vtkSMMessage*, int);
// Description:
// Parse the xml for the property.
virtual bool ReadXMLAttributes(vtkSIProxy* proxyhelper, vtkPVXMLElement* element);
// Description:
// Command that can be used to remove inputs. If set, this
// command is called before the main Command is called with
// all the arguments.
vtkSetStringMacro(CleanCommand);
char* CleanCommand;
// Description:
// Remove command is the command called to remove the VTK
// object on the server-side. If set, CleanCommand is ignored.
// Instead for every proxy that was absent from the proxies
// previously pushed, the RemoveCommand is invoked.
vtkSetStringMacro(RemoveCommand);
char* RemoveCommand;
// When set to true, the property will push a NULL i.e. 0 when there are no
// proxies in the property. Not used when CleanCommand or RemoveCommand is
// set. Default is false.
vtkSetMacro(NullOnEmpty, bool);
bool NullOnEmpty;
enum TypeArg {
VTK, SMProxy, SIProxy
};
// Proxy type: VTK (default), SMProxy, Kernel,
// In the XML we expect argument_type="VTK" (default value if not set)
// argument_type="SMProxy"
// argument_type="SIProxy"
TypeArg ArgumentType;
// Base on the ArgumentType will return either the VTK object or the SMProxy object
vtkObjectBase* GetObjectBase(vtkTypeUInt32 globalId);
// Allow to detect if a null argument is really meant to be null
bool IsValidNull(vtkTypeUInt32 globalId);
private:
vtkSIProxyProperty(const vtkSIProxyProperty&); // Not implemented
void operator=(const vtkSIProxyProperty&); // Not implemented
class InternalCache;
InternalCache *Cache;
class vtkObjectCache;
vtkObjectCache* ObjectCache;
//ETX
};
#endif