File: vtkSIProxyProperty.h

package info (click to toggle)
paraview 5.4.1%2Bdfsg4-3.1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 218,616 kB
  • sloc: cpp: 2,331,508; ansic: 322,365; python: 111,051; xml: 79,203; tcl: 47,013; yacc: 4,877; java: 4,438; perl: 3,238; sh: 2,920; lex: 1,908; f90: 748; makefile: 273; pascal: 228; objc: 83; fortran: 31
file content (132 lines) | stat: -rw-r--r-- 4,013 bytes parent folder | download
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