Parameter.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2006-2011, SRI International (R)
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public License
15  * along with this program. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 #pragma once
19 
20 #ifndef __OpenKarto_Parameter_h__
21 #define __OpenKarto_Parameter_h__
22 
23 #include <OpenKarto/String.h>
24 #include <OpenKarto/Geometry.h>
25 #include <OpenKarto/Event.h>
26 #include <OpenKarto/SmartPointer.h>
27 #include <OpenKarto/Meta.h>
28 
29 namespace karto
30 {
31 
33 
34 
38 
44  {
61  };
62 
66 
72  {
73  public:
80  ParameterDescription(const karto::String& rName, const karto::String& rDisplayName = "", const karto::String& rDescription = "");
81  virtual ~ParameterDescription();
82 
83  public:
88  inline const karto::String& GetName() const
89  {
90  return m_Name;
91  }
92 
97  inline const karto::String& GetDisplayName() const
98  {
99  return m_DisplayName;
100  }
101 
106  inline const karto::String& GetDescription() const
107  {
108  return m_Description;
109  }
110 
115  inline kt_int32s GetFlags() const
116  {
117  return m_Flags;
118  }
119 
124  inline void SetFlags(kt_int32s flags)
125  {
126  m_Flags = flags;
127  }
128 
135  {
136  if (index >= 4)
137  {
138  assert(index < 4);
139  throw karto::Exception("ParameterDescription::GetFieldName() - Invalid argument, index must be [0;3]");
140  }
141 
142  return m_FieldNames[index];
143  }
144 
152  void SetFieldNames(const karto::String& rX = "X", const karto::String& rY = "Y", const karto::String& rZ = "Z", const karto::String& rW = "W")
153  {
154  m_FieldNames[0] = rX;
155  m_FieldNames[1] = rY;
156  m_FieldNames[2] = rZ;
157  m_FieldNames[3] = rW;
158  }
159 
165  {
166  return m_nDecimalPlaces;
167  }
168 
174  {
175  m_nDecimalPlaces = decimalPlaces;
176  }
177 
178  private:
183 
188 
193 
198  karto::String m_FieldNames[4];
199 
204 
209  };
210 
214 
215  class ParameterSet;
216 
221  {
222  KARTO_RTTI();
223 
224  public:
230  AbstractParameter(ParameterDescription* pDescription, ParameterSet* pParameterSet = NULL);
231 
232  protected:
233  //@cond EXCLUDE
237  virtual ~AbstractParameter();
238  //@endcond
239 
240  public:
245 
246  public:
251  inline const karto::String& GetName() const
252  {
253  return m_pDescription->GetName();
254  }
255 
260  inline const karto::String& GetDisplayName() const
261  {
262  return m_pDescription->GetDisplayName();
263  }
264 
269  inline const karto::String& GetDescription() const
270  {
271  return m_pDescription->GetDescription();
272  }
273 
278  inline kt_int32s GetFlags() const
279  {
280  return m_pDescription->GetFlags();
281  }
282 
288  {
289  return m_pDescription;
290  }
291 
297  {
298  return m_pDescription;
299  }
300 
305  virtual const karto::String GetValueAsString() const = 0;
306 
311  virtual void SetValueFromString(const karto::String& rStringValue) = 0;
312 
316  virtual void SetToDefaultValue() = 0;
317 
318  protected:
322  virtual void InitializeParameters();
323 
324  private:
325  // restrict the following functions
327  const AbstractParameter& operator=(const AbstractParameter&);
328 
329  private:
332  };
333 
338 
343 
347 
348  struct ParameterSetPrivate;
349 
354  {
355  public:
359  ParameterSet();
360 
361  protected:
362  //@cond EXCLUDE
366  virtual ~ParameterSet();
367  //@endcond
368 
369  public:
375  void AddParameter(AbstractParameter* pParameter);
376 
381  void RemoveParameter(AbstractParameter* pParameter);
382 
388  AbstractParameter* GetParameter(const karto::String& rParameterName) const;
389 
395  AbstractParameter* GetParameter(const karto::String& rParameterName);
396 
400  void Clear();
401 
406  const ParameterList& GetParameters() const;
407 
412  ParameterList& GetParameters();
413 
414  private:
415  // restrict the following functions
416  ParameterSet(const ParameterSet&);
417  const ParameterSet& operator=(const ParameterSet&);
418 
419  private:
421  }; // class ParameterSet
422 
427 
431 
435  template<typename T>
437  {
438  KARTO_RTTI();
439 
440  public:
446  Parameter(ParameterDescription* pDescription, const T& rValue)
447  : AbstractParameter(pDescription)
448  , m_Value(rValue)
449  {
451  }
452 
461  Parameter(ParameterSet* pParameterSet, const karto::String& rName, const karto::String& rDisplayName, const karto::String& rDescription, const T& rValue)
462  : AbstractParameter(new ParameterDescription(rName, rDisplayName, rDescription), pParameterSet)
463  , m_Value(rValue)
464  {
466  }
467 
468  protected:
469  //@cond EXCLUDE
473  virtual ~Parameter()
474  {
475  }
476  //@endcond
477 
478  public:
483  virtual const T& GetValue() const
484  {
485  return m_Value;
486  }
487 
492  virtual void SetValue(const T& rValue)
493  {
494  kt_bool changed = !CompareValue(rValue);
495 
496  if (changed)
497  {
498  m_Value = rValue;
499 
500  Changed.Notify(this, EventArguments::Empty());
501  }
502  }
503 
508  virtual T& GetDefaultValue()
509  {
510  return m_DefaultValue;
511  }
512 
517  virtual void SetDefaultValue(const T& rValue)
518  {
519  m_DefaultValue = rValue;
520  }
521 
526  virtual const karto::String GetValueAsString() const
527  {
529  }
530 
535  virtual void SetValueFromString(const karto::String& rStringValue)
536  {
537  T value;
538  if (karto::StringHelper::FromString(rStringValue, value))
539  {
540  SetValue(value);
541  }
542  }
543 
547  virtual void SetToDefaultValue()
548  {
550  }
551 
552  protected:
556  virtual void InitializeParameters()
557  {
559  }
560 
566  kt_bool CompareValue(const T& rValue)
567  {
568  return m_Value == rValue;
569  }
570 
571  private:
572  // restrict the following functions
573  Parameter(const Parameter&);
574  const Parameter& operator=(const Parameter&);
575 
576  protected:
581 
582  private:
587  };
588 
593 
598 
603 
608 
613 
618 
623 
628 
633 
638 
643 
648 
653 
658 
663 
668 
673 
678 
683 
688 
693 
698 
703 
708 
713 
718 
723 
728 
733 
738 
742 
743  struct ParameterEnumPrivate;
744 
748  class KARTO_EXPORT ParameterEnum : public Parameter<kt_int64s>
749  {
750  KARTO_RTTI();
751 
752  public:
761  ParameterEnum(ParameterSet* pParameterSet, const karto::String& rName, const karto::String& rDisplayName, const karto::String& rDescription, kt_int64s value);
762 
763  protected:
764  //@cond EXCLUDE
768  virtual ~ParameterEnum();
769  //@endcond
770 
771  public:
777  virtual const karto::String GetValueAsString() const;
778 
784  virtual void SetValueFromString(const karto::String& rStringValue);
785 
786  public:
792  void DefineEnumValue(const String& rName, kt_int64s value);
793 
798  const EnumPairList GetEnumValues() const;
799 
800  private:
802  }; // class ParameterEnum
803 
808 
810 }
811 
812 #endif // __OpenKarto_Parameter_h__
karto::ParameterDescription::m_Description
karto::String m_Description
Definition: Parameter.h:192
karto::ParameterDescription::m_Flags
kt_int32s m_Flags
Definition: Parameter.h:203
karto::ParameterDescription::SetFlags
void SetFlags(kt_int32s flags)
Definition: Parameter.h:124
SmartPointer.h
karto::Parameter::Parameter
Parameter(ParameterSet *pParameterSet, const karto::String &rName, const karto::String &rDisplayName, const karto::String &rDescription, const T &rValue)
Definition: Parameter.h:461
karto::Parameter::KARTO_RTTI
KARTO_RTTI()
karto::Parameter::SetDefaultValue
virtual void SetDefaultValue(const T &rValue)
Definition: Parameter.h:517
karto::AbstractParameter::GetFlags
kt_int32s GetFlags() const
Definition: Parameter.h:278
karto::Parameter::m_Value
T m_Value
Definition: Parameter.h:580
karto::ParameterDescription::GetFieldName
const karto::String & GetFieldName(kt_int32u index) const
Definition: Parameter.h:134
karto::Parameter::SetToDefaultValue
virtual void SetToDefaultValue()
Definition: Parameter.h:547
karto::Parameter::GetValueAsString
virtual const karto::String GetValueAsString() const
Definition: Parameter.h:526
karto::AbstractParameter::m_pParameterSet
ParameterSet * m_pParameterSet
Definition: Parameter.h:331
karto::ParameterDescription::GetName
const karto::String & GetName() const
Definition: Parameter.h:88
karto::ParameterSet
Definition: Parameter.h:353
karto::Referenced
Definition: Referenced.h:42
karto::ParameterSetPtr
SmartPointer< ParameterSet > ParameterSetPtr
Definition: Parameter.h:426
karto::ParameterDescription::SetNumberOfDecimalPlaces
void SetNumberOfDecimalPlaces(kt_int32s decimalPlaces)
Definition: Parameter.h:173
karto::Parameter::operator=
const Parameter & operator=(const Parameter &)
karto::StringHelper::FromString
static kt_bool FromString(const String &rStringValue, kt_bool &rValue)
Definition: StringHelper.cpp:188
karto::AbstractParameter::Changed
BasicEvent< EventArguments > Changed
Definition: Parameter.h:244
Geometry.h
karto::KARTO_TYPE
KARTO_TYPE(Grid< kt_int8u >)
karto::AbstractParameter::GetDisplayName
const karto::String & GetDisplayName() const
Definition: Parameter.h:260
karto::ParameterDescription::m_DisplayName
karto::String m_DisplayName
Definition: Parameter.h:187
karto::ParameterSetPrivate
Definition: Parameter.cpp:79
karto::AbstractParameter::GetParameterDescription
ParameterDescription * GetParameterDescription()
Definition: Parameter.h:296
karto::Size2< kt_int32s >
kt_int32s
int32_t kt_int32s
Definition: Types.h:106
karto::StringHelper::ToString
static String ToString(const char *value)
Definition: StringHelper.cpp:32
karto::ParameterFlag_Read
@ ParameterFlag_Read
Definition: Parameter.h:48
karto::ParameterList
List< SmartPointer< AbstractParameter > > ParameterList
Definition: Parameter.h:342
karto::ParameterFlag_Hidden
@ ParameterFlag_Hidden
Definition: Parameter.h:56
karto::ParameterFlags
ParameterFlags
Definition: Parameter.h:43
karto::String
Definition: String.h:52
KARTO_EXPORT
#define KARTO_EXPORT
Definition: Macros.h:78
Meta.h
karto::Parameter
Definition: Parameter.h:436
karto::ParameterDescription::SetFieldNames
void SetFieldNames(const karto::String &rX="X", const karto::String &rY="Y", const karto::String &rZ="Z", const karto::String &rW="W")
Definition: Parameter.h:152
karto::Parameter::SetValueFromString
virtual void SetValueFromString(const karto::String &rStringValue)
Definition: Parameter.h:535
karto::Parameter::CompareValue
kt_bool CompareValue(const T &rValue)
Definition: Parameter.h:566
karto::ParameterSet::m_pPrivate
ParameterSetPrivate * m_pPrivate
Definition: Parameter.h:420
karto::ParameterDescription::GetDescription
const karto::String & GetDescription() const
Definition: Parameter.h:106
karto::List
Definition: List.h:49
karto::ParameterDescription
Definition: Parameter.h:71
kt_int64s
signed long long kt_int64s
Definition: Types.h:127
Event.h
karto::ParameterEnumPrivate
Definition: Parameter.cpp:169
kt_bool
bool kt_bool
Definition: Types.h:145
karto::ParameterFlag_Write
@ ParameterFlag_Write
Definition: Parameter.h:52
karto::ParameterDescription::m_nDecimalPlaces
kt_int32s m_nDecimalPlaces
Definition: Parameter.h:208
karto::ParameterDescription::m_Name
karto::String m_Name
Definition: Parameter.h:182
karto::AbstractParameter::GetName
const karto::String & GetName() const
Definition: Parameter.h:251
karto::Parameter::InitializeParameters
virtual void InitializeParameters()
Definition: Parameter.h:556
karto::ParameterEnum
Definition: Parameter.h:748
karto::BasicEvent
Definition: Event.h:990
karto::ParameterDescription::GetNumberOfDecimalPlaces
kt_int32s GetNumberOfDecimalPlaces() const
Definition: Parameter.h:164
karto::Vector2
Definition: Geometry.h:323
karto::AbstractParameter
Definition: Parameter.h:220
karto::AbstractParameter::GetParameterDescription
const ParameterDescription * GetParameterDescription() const
Definition: Parameter.h:287
KARTO_RTTI
#define KARTO_RTTI()
Definition: Meta.h:198
karto::Exception
Definition: Exception.h:38
karto::Parameter::SetValue
virtual void SetValue(const T &rValue)
Definition: Parameter.h:492
karto::Parameter::GetDefaultValue
virtual T & GetDefaultValue()
Definition: Parameter.h:508
karto::AbstractParameter::m_pDescription
karto::SmartPointer< ParameterDescription > m_pDescription
Definition: Parameter.h:330
karto::ParameterDescription::GetDisplayName
const karto::String & GetDisplayName() const
Definition: Parameter.h:97
kt_int32u
uint32_t kt_int32u
Definition: Types.h:111
String.h
karto::EventArguments::Empty
static EventArguments & Empty()
Definition: Event.h:1028
karto::SmartPointer
Definition: SmartPointer.h:39
karto::ParameterDescription::GetFlags
kt_int32s GetFlags() const
Definition: Parameter.h:115
karto::ParameterEnum::m_pPrivate
ParameterEnumPrivate * m_pPrivate
Definition: Parameter.h:801
karto::Parameter::GetValue
virtual const T & GetValue() const
Definition: Parameter.h:483
karto::Parameter::Parameter
Parameter(ParameterDescription *pDescription, const T &rValue)
Definition: Parameter.h:446
karto::Parameter::m_DefaultValue
T m_DefaultValue
Definition: Parameter.h:586
karto::AbstractParameter::GetDescription
const karto::String & GetDescription() const
Definition: Parameter.h:269
karto::ParameterFlag_System
@ ParameterFlag_System
Definition: Parameter.h:60
karto
Definition: Any.cpp:20


nav2d_karto
Author(s): Sebastian Kasperski
autogenerated on Wed Mar 2 2022 00:37:22