vtkSMPropertyHelper.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: ParaView
4  Module: vtkSMPropertyHelper.h
5 
6  Copyright (c) Kitware, Inc.
7  All rights reserved.
8  See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
15 /*
16 * Copyright (c) 2007, Sandia Corporation
17 * All rights reserved.
18 *
19 * Redistribution and use in source and binary forms, with or without
20 * modification, are permitted provided that the following conditions are met:
21 * * Redistributions of source code must retain the above copyright
22 * notice, this list of conditions and the following disclaimer.
23 * * Redistributions in binary form must reproduce the above copyright
24 * notice, this list of conditions and the following disclaimer in the
25 * documentation and/or other materials provided with the distribution.
26 * * Neither the name of the Sandia Corporation nor the
27 * names of its contributors may be used to endorse or promote products
28 * derived from this software without specific prior written permission.
29 *
30 * THIS SOFTWARE IS PROVIDED BY Sandia Corporation ``AS IS'' AND ANY
31 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
32 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
33 * DISCLAIMED. IN NO EVENT SHALL Sandia Corporation BE LIABLE FOR ANY
34 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
35 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
36 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
37 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
38 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
39 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40 */
60 #ifndef vtkSMPropertyHelper_h
61 #define vtkSMPropertyHelper_h
62 
63 #include "vtkRemotingServerManagerModule.h" //needed for exports
64 #include "vtkSMObject.h"
65 #include "vtkVariant.h"
66 
67 #include <vector>
68 
69 #ifdef INT
70 #undef INT
71 #endif
72 #ifdef DOUBLE
73 #undef DOUBLE
74 #endif
75 #ifdef NONE
76 #undef NONE
77 #endif
78 
79 class vtkSMProperty;
80 class vtkSMProxy;
86 class vtkSMProxyProperty;
87 class vtkSMInputProperty;
88 
89 class VTKREMOTINGSERVERMANAGER_EXPORT vtkSMPropertyHelper
90 {
91 public:
93 
97  vtkSMPropertyHelper(vtkSMProxy* proxy, const char* name, bool quiet = false);
98  vtkSMPropertyHelper(vtkSMProperty* property, bool quiet = false);
101 
107  void UpdateValueFromServer();
108 
113  void SetNumberOfElements(unsigned int elems);
114 
119  unsigned int GetNumberOfElements() const;
120 
124  void RemoveAllValues() { this->SetNumberOfElements(0); }
125 
129  vtkVariant GetAsVariant(unsigned int index) const;
130 
135  template <class T>
136  std::vector<T> GetArray() const;
137 
142  template <class T>
143  T GetAs(unsigned int index = 0) const;
144 
146 
150  void Set(int value) { this->Set(0, value); }
151  void Set(unsigned int index, int value);
152  void Set(const int* values, unsigned int count);
153  int GetAsInt(unsigned int index = 0) const;
154  unsigned int Get(int* values, unsigned int count = 1) const;
155  std::vector<int> GetIntArray() const;
157 
159 
163  void Set(double value) { this->Set(0, value); }
164  void Set(unsigned int index, double value);
165  void Set(const double* values, unsigned int count);
166  double GetAsDouble(unsigned int index = 0) const;
167  unsigned int Get(double* values, unsigned int count = 1) const;
168  std::vector<double> GetDoubleArray() const;
170 
171 #if VTK_SIZEOF_ID_TYPE != VTK_SIZEOF_INT
172 
173 
177  void Set(vtkIdType value) { this->Set(0, value); }
178  void Set(unsigned int index, vtkIdType value);
179  void Set(const vtkIdType* values, unsigned int count);
180  unsigned int Get(vtkIdType* values, unsigned int count = 1) const;
181 #endif
182  vtkIdType GetAsIdType(unsigned int index = 0) const;
183  std::vector<vtkIdType> GetIdTypeArray() const;
185 
187 
194  void Set(const char* value) { this->Set(0, value); }
195  void Set(unsigned int index, const char* value);
196  const char* GetAsString(unsigned int index = 0) const;
198 
200 
205  void Set(vtkSMProxy* value, unsigned int outputport = 0) { this->Set(0, value, outputport); }
206  void Set(unsigned int index, vtkSMProxy* value, unsigned int outputport = 0);
207  void Set(vtkSMProxy** value, unsigned int count, unsigned int* outputports = NULL);
208  void Add(vtkSMProxy* value, unsigned int outputport = 0);
209  void Remove(vtkSMProxy* value);
210  vtkSMProxy* GetAsProxy(unsigned int index = 0) const;
211  unsigned int GetOutputPort(unsigned int index = 0) const;
213 
215 
220  void SetStatus(const char* key, int value);
221  int GetStatus(const char* key, int default_value = 0) const;
223 
225 
230  void SetStatus(const char* key, double* values, int num_values);
231  bool GetStatus(const char* key, double* values, int num_values) const;
233 
235 
240  void SetStatus(const int key, int* values, int num_values);
241  bool GetStatus(const int key, int* values, int num_values) const;
243 
245 
250  void SetStatus(const char* key, const char* value);
251  const char* GetStatus(const char* key, const char* default_value) const;
253 
255 
260  void SetStatus(const int key, int value);
261  int GetStatus(const int key, int default_value = 0) const;
263 
265 
270  void SetInputArrayToProcess(int fieldAssociation, const char* arrayName);
271  int GetInputArrayAssociation() const;
272  const char* GetInputArrayNameToProcess() const;
274 
278  void SetUseUnchecked(bool val) { this->UseUnchecked = val; }
279  bool GetUseUnchecked() const { return this->UseUnchecked; }
280 
286  bool Copy(const vtkSMPropertyHelper& source);
287 
292  vtkSMPropertyHelper& Modified();
293 
294 protected:
295  void setUseUnchecked(bool useUnchecked) { this->UseUnchecked = useUnchecked; }
296 
297 private:
298  vtkSMPropertyHelper(const vtkSMPropertyHelper&) = delete;
299  void operator=(const vtkSMPropertyHelper&) = delete;
300  void Initialize(vtkSMProperty* property);
301 
302  template <typename T>
303  T GetProperty(unsigned int index) const;
304  template <typename T>
305  std::vector<T> GetPropertyArray() const;
306  template <typename T>
307  unsigned int GetPropertyArray(T* values, unsigned int count = 1) const;
308  template <typename T>
309  void SetProperty(unsigned int index, T value);
310  template <typename T>
311  void SetPropertyArray(const T* values, unsigned int count);
312  void SetPropertyArrayIdType(const vtkIdType* values, unsigned int count);
313  template <typename T>
314  bool CopyInternal(const vtkSMPropertyHelper& source);
315 
316  enum PType
317  {
318  INT,
319  DOUBLE,
320  IDTYPE,
321  STRING,
322  PROXY,
323  INPUT,
324  NONE
325  };
326 
327  bool Quiet;
328  bool UseUnchecked;
329  vtkSMProxy* Proxy;
330  PType Type;
331 
332  union {
341  };
342 };
343 
344 template <>
345 inline std::vector<int> vtkSMPropertyHelper::GetArray() const
346 {
347  return this->GetIntArray();
348 }
349 
350 template <>
351 inline std::vector<double> vtkSMPropertyHelper::GetArray() const
352 {
353  return this->GetDoubleArray();
354 }
355 
356 #if VTK_SIZEOF_ID_TYPE != VTK_SIZEOF_INT
357 template <>
358 inline std::vector<vtkIdType> vtkSMPropertyHelper::GetArray() const
359 {
360  return this->GetIdTypeArray();
361 }
362 #endif
363 
364 template <>
365 inline int vtkSMPropertyHelper::GetAs(unsigned int index) const
366 {
367  return this->GetAsInt(index);
368 }
369 
370 template <>
371 inline double vtkSMPropertyHelper::GetAs(unsigned int index) const
372 {
373  return this->GetAsDouble(index);
374 }
375 
376 #if VTK_SIZEOF_ID_TYPE != VTK_SIZEOF_INT
377 template <>
378 inline vtkIdType vtkSMPropertyHelper::GetAs(unsigned int index) const
379 {
380  return this->GetAsIdType(index);
381 }
382 #endif
383 
384 #endif
385 
386 // VTK-HeaderTest-Exclude: vtkSMPropertyHelper.h
void Set(const char *value)
Set/Get methods for vtkSMStringVectorProperty.
vtkSMInputProperty * InputProperty
vtkSMDoubleVectorProperty * DoubleVectorProperty
property representing pointer(s) to vtkObject(s)
vtkSMProxyProperty * ProxyProperty
void setUseUnchecked(bool useUnchecked)
property representing a vector of strings
vtkSMIdTypeVectorProperty * IdTypeVectorProperty
vtkSMStringVectorProperty * StringVectorProperty
superclass for all SM properties
void Set(vtkSMProxy *value, unsigned int outputport=0)
Set/Get methods for vtkSMProxyProperty or vtkSMInputProperty.
int vtkIdType
vtkSMVectorProperty * VectorProperty
void Set(double value)
Set/Get methods with double API.
property representing a vector of integers
abstract superclass for all vector properties
name
void RemoveAllValues()
Equivalent to SetNumberOfElements(0).
property representing a vector of integers
std::vector< T > GetArray() const
Templated method to call GetIntArray(), GetDoubleArray(), GetIdTypeArray().
vtkSMProperty * Property
T GetAs(unsigned int index=0) const
Templated method to call GetAsInt(), GetAsDouble(), GetAsIdType() Note, we only provide implementatio...
double GetAsDouble(unsigned int index=0) const
Set/Get methods with double API.
std::vector< vtkIdType > GetIdTypeArray() const
property representing a vector of doubles
std::vector< double > GetDoubleArray() const
Set/Get methods with double API.
vtkIdType GetAsIdType(unsigned int index=0) const
void SetUseUnchecked(bool val)
Get/Set whether to use unchecked properties.
int GetAsInt(unsigned int index=0) const
Set/Get methods with int API.
proxy for a VTK object(s) on a server
Definition: vtkSMProxy.h:152
void Set(int value)
Set/Get methods with int API.
std::vector< int > GetIntArray() const
Set/Get methods with int API.
vtkSMIntVectorProperty * IntVectorProperty
proxy representing inputs to a filter
helper class to get/set property values.