PlusLib  2.9.0
Software library for tracked ultrasound image acquisition, calibration, and processing.
vtkPlusParameters.h
Go to the documentation of this file.
1 /*=Plus=header=begin======================================================
2 Program: Plus
3 Copyright (c) Laboratory for Percutaneous Surgery. All rights reserved.
4 See License.txt for details.
5 =========================================================Plus=header=end*/
6 
7 #ifndef __vtkPlusParameters_h
8 #define __vtkPlusParameters_h
9 
10 #include "vtkPlusDataCollectionExport.h"
11 
12 #include <string>
13 #include <map>
14 
24 class vtkPlusDataCollectionExport vtkPlusParameters : public vtkObject
25 {
26 protected:
28  {
29  public:
30  ParameterInfo() : Value(""), Set(false), Pending(false) {};
31  ParameterInfo(std::string defaultValue) : Value(defaultValue), Set(false), Pending(false) {};
32 
34  std::string Value;
37  bool Set;
39  bool Pending;
40  };
41  typedef std::map<std::string, ParameterInfo> ParameterMap;
42  typedef ParameterMap::iterator ParameterMapIterator;
43  typedef ParameterMap::const_iterator ParameterMapConstIterator;
44 
46  ParameterMapConstIterator begin() const;
48  ParameterMapConstIterator end() const;
49 
50  public:
51  static const char* XML_ELEMENT_TAG;
52  static const char* PARAMETER_TAG;
53  static const char* NAME_TAG;
54  static const char* VALUE_TAG;
55 
56 public:
57  static vtkPlusParameters* New();
58  vtkTypeMacro(vtkPlusParameters, vtkObject);
59 
65  virtual PlusStatus ReadConfiguration(vtkXMLDataElement* deviceConfig);
66 
72  virtual PlusStatus WriteConfiguration(vtkXMLDataElement* deviceConfig);
73 
77  virtual PlusStatus DeepCopy(const vtkPlusParameters& otherParameters);
78 
84  template<typename T> PlusStatus GetValue(const std::string& paramName, T& outputValue) const
85  {
86  ParameterMapConstIterator keyIt = this->Parameters.find(paramName);
87  if (keyIt != this->Parameters.end() && keyIt->second.Set == false)
88  {
89  return PLUS_FAIL;
90  }
91  else if (keyIt == this->Parameters.end())
92  {
93  return PLUS_FAIL;
94  }
95 
96  std::stringstream ss;
97  ParameterMapConstIterator it = this->Parameters.find(paramName);
98  ss.str(it->second.Value);
99  ss >> outputValue;
100  return PLUS_SUCCESS;
101  }
102 
109  template<typename T> PlusStatus SetValue(const std::string& paramName, T aValue)
110  {
111  std::stringstream ss;
112  ss << aValue;
113  if (this->Parameters[paramName].Value != ss.str())
114  {
115  this->Parameters[paramName].Pending = true;
116  }
117  this->Parameters[paramName].Value = ss.str();
118  this->Parameters[paramName].Set = true;
119  return PLUS_SUCCESS;
120  };
125  bool IsSet(const std::string& paramName) const;
130  bool IsPending(const std::string& paramName) const;
134  PlusStatus SetPending(const std::string& paramName, bool pending);
135 
137  virtual void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
138 
139 protected:
141  virtual ~vtkPlusParameters();
142 
143  virtual const char* GetXMLElementName() { return vtkPlusParameters::XML_ELEMENT_TAG; };
144 
145  ParameterMap Parameters;
146 };
147 
148 #endif
bool Pending
Flag indicating whether the parameter is changed but has not been set to device.
ParameterMap::iterator ParameterMapIterator
This class is used as the basis to store a configuration of generic parameters for any device....
igsioStatus PlusStatus
Definition: PlusCommon.h:40
static const char * NAME_TAG
#define PLUS_FAIL
Definition: PlusCommon.h:43
#define VTK_OVERRIDE
Definition: PlusCommon.h:49
static const char * XML_ELEMENT_TAG
#define PLUS_SUCCESS
Definition: PlusCommon.h:44
PlusStatus SetValue(const std::string &paramName, T aValue)
ParameterMap::const_iterator ParameterMapConstIterator
PlusStatus GetValue(const std::string &paramName, T &outputValue) const
std::map< std::string, ParameterInfo > ParameterMap
static const char * VALUE_TAG
static const char * PARAMETER_TAG