1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
/*=========================================================================
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.
=========================================================================*/
/**
* @class vtkSIProxyProperty
*
* 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) VTK_OVERRIDE;
//@{
/**
* 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);
//@}
//@{
/**
* 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);
protected:
vtkSIProxyProperty();
~vtkSIProxyProperty();
/**
* Push a new state to the underneath implementation
*/
virtual bool Push(vtkSMMessage*, int) VTK_OVERRIDE;
/**
* Parse the xml for the property.
*/
virtual bool ReadXMLAttributes(vtkSIProxy* proxyhelper, vtkPVXMLElement* element) VTK_OVERRIDE;
//@{
/**
* 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;
//@}
//@{
/**
* 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&) VTK_DELETE_FUNCTION;
void operator=(const vtkSIProxyProperty&) VTK_DELETE_FUNCTION;
class InternalCache;
InternalCache* Cache;
class vtkObjectCache;
vtkObjectCache* ObjectCache;
};
#endif
|