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  {
450  InitializeParameters();
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  {
465  InitializeParameters();
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  {
528  return karto::StringHelper::ToString(m_Value);
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  {
549  SetValue(m_DefaultValue);
550  }
551 
552  protected:
556  virtual void InitializeParameters()
557  {
558  SetDefaultValue(GetValue());
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::SmartPointer< ParameterDescription > m_pDescription
Definition: Parameter.h:330
bool kt_bool
Definition: Types.h:145
ParameterSet * m_pParameterSet
Definition: Parameter.h:331
const ParameterDescription * GetParameterDescription() const
Definition: Parameter.h:287
SmartPointer< ParameterSet > ParameterSetPtr
Definition: Parameter.h:426
static kt_bool FromString(const String &rStringValue, kt_bool &rValue)
const karto::String & GetDisplayName() const
Definition: Parameter.h:97
List< SmartPointer< AbstractParameter > > ParameterList
Definition: Parameter.h:342
virtual const T & GetValue() const
Definition: Parameter.h:483
#define KARTO_EXPORT
Definition: Macros.h:78
static EventArguments & Empty()
Definition: Event.h:1028
karto::String m_DisplayName
Definition: Parameter.h:187
const karto::String & GetFieldName(kt_int32u index) const
Definition: Parameter.h:134
Parameter(ParameterSet *pParameterSet, const karto::String &rName, const karto::String &rDisplayName, const karto::String &rDescription, const T &rValue)
Definition: Parameter.h:461
ParameterDescription * GetParameterDescription()
Definition: Parameter.h:296
virtual void SetValueFromString(const karto::String &rStringValue)
Definition: Parameter.h:535
void SetNumberOfDecimalPlaces(kt_int32s decimalPlaces)
Definition: Parameter.h:173
const karto::String & GetName() const
Definition: Parameter.h:88
virtual void SetValue(const T &rValue)
Definition: Parameter.h:492
virtual void SetDefaultValue(const T &rValue)
Definition: Parameter.h:517
uint32_t kt_int32u
Definition: Types.h:111
kt_int32s GetNumberOfDecimalPlaces() const
Definition: Parameter.h:164
void SetFlags(kt_int32s flags)
Definition: Parameter.h:124
virtual void SetToDefaultValue()
Definition: Parameter.h:547
const karto::String & GetName() const
Definition: Parameter.h:251
#define KARTO_RTTI()
Definition: Meta.h:198
static String ToString(const char *value)
Parameter(ParameterDescription *pDescription, const T &rValue)
Definition: Parameter.h:446
const karto::String & GetDescription() const
Definition: Parameter.h:269
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
virtual const karto::String GetValueAsString() const
Definition: Parameter.h:526
virtual T & GetDefaultValue()
Definition: Parameter.h:508
int32_t kt_int32s
Definition: Types.h:106
KARTO_TYPE(Grid< kt_int8u >)
kt_int32s GetFlags() const
Definition: Parameter.h:115
const karto::String & GetDescription() const
Definition: Parameter.h:106
ParameterFlags
Definition: Parameter.h:43
signed long long kt_int64s
Definition: Types.h:127
BasicEvent< EventArguments > Changed
Definition: Parameter.h:244
Definition: Any.cpp:20
ParameterSetPrivate * m_pPrivate
Definition: Parameter.h:420
virtual void InitializeParameters()
Definition: Parameter.h:556
kt_bool CompareValue(const T &rValue)
Definition: Parameter.h:566
const karto::String & GetDisplayName() const
Definition: Parameter.h:260
kt_int32s GetFlags() const
Definition: Parameter.h:278
karto::String m_Description
Definition: Parameter.h:192
ParameterEnumPrivate * m_pPrivate
Definition: Parameter.h:801


nav2d_karto
Author(s): Sebastian Kasperski
autogenerated on Tue Nov 7 2017 06:02:36