PropertyDefinition< PropertyType > Class Template Reference

PropertyDefinition defines a property that will be available within the PropertyUser. More...

#include <ArmarXCore/core/application/properties/PropertyDefinition.h>

+ Inheritance diagram for PropertyDefinition< PropertyType >:

Public Types

typedef std::function< PropertyType(std::string)> PropertyFactoryFunction
 
using PropertyTypePtr = std::shared_ptr< PropertyType >
 
using PropertyValuesMap = std::map< std::string, ValueEntry >
 
using ValueEntry = std::pair< std::string, PropertyType >
 
- Public Types inherited from PropertyDefinitionBase
enum  PropertyConstness { eConstant, eModifiable }
 

Public Member Functions

bool expandEnvironmentVariables () const
 
std::string getDefaultAsString () override
 
PropertyType getDefaultValue ()
 
std::string getDescription () const
 
PropertyFactoryFunction getFactory () const
 
std::string getMatchRegex () const
 
double getMax () const
 
double getMin () const
 
std::string getPropertyName () const
 
PropertyType getValue (const std::string &prefix, Ice::PropertiesPtr)
 
PropertyValuesMapgetValueMap ()
 
bool isCaseInsensitive () const
 
bool isSet (const std::string &prefix, Ice::PropertiesPtr iceProperties) const
 
PropertyDefinition< PropertyType > & map (const std::map< std::string, PropertyType > &values)
 
template<class T >
std::enable_if_t< std::is_same_v< T, PropertyType > &&!std::is_same_v< T, std::string >, PropertyDefinition< T > & > map (const std::map< T, std::string > &values)
 
PropertyDefinition< PropertyType > & map (const std::string &valueString, PropertyType value)
 Maps a string value onto a value of the specified template type. More...
 
template<class T >
std::enable_if_t< meta::properties::MapPropertyValuePlugin< T >::value, PropertyDefinition< PropertyType > & > map (const T &values)
 
 PropertyDefinition (PropertyType *setterRef, const std::string &propertyName, const std::string &description, PropertyDefinitionBase::PropertyConstness constness=PropertyDefinitionBase::eConstant)
 Constructs a property definition of a required property. More...
 
 PropertyDefinition (PropertyType *setterRef, const std::string &propertyName, PropertyType defaultValue, const std::string &description, PropertyDefinitionBase::PropertyConstness constness=PropertyDefinitionBase::eConstant)
 Constructs a property definition of an optional property. More...
 
bool removeQuotes () const
 
PropertyDefinition< PropertyType > & setCaseInsensitive (bool isCaseInsensitive)
 Sets whether the property value matching is case insensitive. More...
 
PropertyDefinition< PropertyType > & setExpandEnvironmentVariables (bool expand)
 Sets whether for string values environment varbiale expanding should be considered. More...
 
PropertyDefinition< PropertyType > & setFactory (const PropertyFactoryFunction &func)
 Sets the factory function that creates the specified template type from the actual string value. More...
 
PropertyDefinition< PropertyType > & setMatchRegex (const std::string &expr)
 Sets the regular expression which the value has to be matched with. More...
 
PropertyDefinition< PropertyType > & setMax (double max)
 Sets the max allowed numeric value. More...
 
template<class T = PropertyType>
PropertyDefinition< PropertyType > & setMax (std::array< T, 1 > max)
 
PropertyDefinition< PropertyType > & setMin (double min)
 Sets the min allowed numeric value. More...
 
template<class T = PropertyType>
PropertyDefinition< PropertyType > & setMin (std::array< T, 1 > min)
 
PropertyDefinition< PropertyType > & setRemoveQuotes (bool removeQuotes)
 Sets whether for string values leading and trailing quotes should be removed. More...
 
std::string toString (PropertyDefinitionFormatter &formatter, const std::string &value) override
 
virtual void writeValueToSetter (const std::string &prefix, Ice::PropertiesPtr) override
 
- Public Member Functions inherited from PropertyDefinitionBase
bool isConstant () const
 
bool isRequired () const
 
bool isSet (std::string const &prefix, std::string const &propertyName, Ice::PropertiesPtr const &iceProperties) const
 
 PropertyDefinitionBase (bool required=true, PropertyConstness constness=eConstant)
 
virtual ~PropertyDefinitionBase ()
 

Static Public Member Functions

static void removeQuotes (const std::string &input, std::string &output)
 Checks first and last character of input and in case both are quotes, they are removed and the remaining result is stored in output. More...
 
- Static Public Member Functions inherited from PropertyDefinitionBase
static std::string icePropertyGet (Ice::PropertiesPtr const &iceProperties, std::string const &key)
 

Protected Attributes

bool caseInsensitive
 Case sensitivity indicator. More...
 
PropertyType defaultValue
 Fallback/Default property value. More...
 
std::string description
 Property description. More...
 
bool expandEnvVars
 Exand environments variables indicator (standard: true) More...
 
PropertyFactoryFunction factory
 Builder function. More...
 
double max
 Upper bound of numeric values (used for numeric value retrieval without mapping) More...
 
double min
 Lower bound of numeric values (used for numeric value retrieval without mapping) More...
 
std::string propertyName
 Property name. More...
 
PropertyValuesMap propertyValuesMap
 Main property map. More...
 
std::string regex
 Regular expression to approve a required value pattern. More...
 
PropertyType * setterRef
 Reference to a variable to set. More...
 
bool stringRemoveQuotes
 Remove leading and trailing quotes indicator (standard: true) First and last character of a string property value are checked for quotes. More...
 
- Protected Attributes inherited from PropertyDefinitionBase
PropertyConstness constness
 
bool required
 If set to true, the property must be explicitely set through configuration parameters. More...
 

Detailed Description

template<typename PropertyType>
class armarx::PropertyDefinition< PropertyType >

PropertyDefinition defines a property that will be available within the PropertyUser.

PropertyDefinition provides the definition and description of a property that may be definined in a config file or passed via command line as an option. Depending which constructor is used a property is either required or optional. In the latter case a default value has to be specified.

The property specific value type (PropertyType) can be arbitrary, yet it is devided into these three groups which are handled internally differently:

  • String values
  • Arithmetic values (integral & floating point types)
  • Custom objects (Classes, Structs, Enums)

Fluent Interface

All setters are self referential and therefor can be chained to simplify the implementation and increase the readability.

Example

PropertyDefinition<float> frameRateDef("MyFrameRate", "Capture frame rate");
frameRateDef
.setMatchRegex("\\d+(.\\d*)?")
.setMin(0.0f)
.setMax(60.0f);

Definition at line 107 of file PropertyDefinition.h.

Member Typedef Documentation

◆ PropertyFactoryFunction

typedef std::function<PropertyType(std::string)> PropertyFactoryFunction

Definition at line 114 of file PropertyDefinition.h.

◆ PropertyTypePtr

using PropertyTypePtr = std::shared_ptr<PropertyType>

Definition at line 111 of file PropertyDefinition.h.

◆ PropertyValuesMap

using PropertyValuesMap = std::map<std::string, ValueEntry>

Definition at line 113 of file PropertyDefinition.h.

◆ ValueEntry

using ValueEntry = std::pair<std::string, PropertyType>

Definition at line 112 of file PropertyDefinition.h.

Constructor & Destructor Documentation

◆ PropertyDefinition() [1/2]

PropertyDefinition ( PropertyType *  setterRef,
const std::string &  propertyName,
const std::string &  description,
PropertyDefinitionBase::PropertyConstness  constness = PropertyDefinitionBase::eConstant 
)

Constructs a property definition of a required property.

Parameters
setterRefSetter
propertyNameName of the property used in config files
descriptionMandatory property description

Definition at line 46 of file PropertyDefinition.hpp.

◆ PropertyDefinition() [2/2]

PropertyDefinition ( PropertyType *  setterRef,
const std::string &  propertyName,
PropertyType  defaultValue,
const std::string &  description,
PropertyDefinitionBase::PropertyConstness  constness = PropertyDefinitionBase::eConstant 
)
inline

Constructs a property definition of an optional property.

Parameters
setterRefSetter
propertyNameName of the property used in config files
defaultValueProperty default value of the type PropertyType
descriptionMandatory property description

Definition at line 68 of file PropertyDefinition.hpp.

Member Function Documentation

◆ expandEnvironmentVariables()

bool expandEnvironmentVariables

Definition at line 258 of file PropertyDefinition.hpp.

◆ getDefaultAsString()

std::string getDefaultAsString
overridevirtual

Implements PropertyDefinitionBase.

Definition at line 370 of file PropertyDefinition.hpp.

+ Here is the call graph for this function:

◆ getDefaultValue()

PropertyType getDefaultValue

Definition at line 321 of file PropertyDefinition.hpp.

+ Here is the caller graph for this function:

◆ getDescription()

std::string getDescription

Definition at line 305 of file PropertyDefinition.hpp.

◆ getFactory()

PropertyDefinition< PropertyType >::PropertyFactoryFunction getFactory

Definition at line 335 of file PropertyDefinition.hpp.

◆ getMatchRegex()

std::string getMatchRegex

Definition at line 273 of file PropertyDefinition.hpp.

◆ getMax()

double getMax

Definition at line 289 of file PropertyDefinition.hpp.

+ Here is the call graph for this function:

◆ getMin()

double getMin

Definition at line 281 of file PropertyDefinition.hpp.

+ Here is the call graph for this function:

◆ getPropertyName()

std::string getPropertyName

Definition at line 297 of file PropertyDefinition.hpp.

◆ getValue()

PropertyType getValue ( const std::string &  prefix,
Ice::PropertiesPtr  iceProperties 
)

Definition at line 466 of file PropertyDefinition.hpp.

◆ getValueMap()

PropertyDefinition< PropertyType >::PropertyValuesMap & getValueMap

Definition at line 313 of file PropertyDefinition.hpp.

+ Here is the caller graph for this function:

◆ isCaseInsensitive()

bool isCaseInsensitive

Definition at line 250 of file PropertyDefinition.hpp.

◆ isSet()

bool isSet ( const std::string &  prefix,
Ice::PropertiesPtr  iceProperties 
) const

Definition at line 703 of file PropertyDefinition.hpp.

+ Here is the call graph for this function:

◆ map() [1/4]

PropertyDefinition< PropertyType > & map ( const std::map< std::string, PropertyType > &  values)
inline

Definition at line 116 of file PropertyDefinition.hpp.

+ Here is the call graph for this function:

◆ map() [2/4]

std::enable_if_t< std::is_same_v< T, PropertyType > &&!std::is_same_v< T, std::string >, PropertyDefinition< T > & > map ( const std::map< T, std::string > &  values)
inline

Definition at line 129 of file PropertyDefinition.hpp.

+ Here is the call graph for this function:

◆ map() [3/4]

PropertyDefinition< PropertyType > & map ( const std::string &  valueString,
PropertyType  value 
)
inline

Maps a string value onto a value of the specified template type.

Parameters
valueStringProperty string value key
valueProperty value
Returns
self reference

Definition at line 95 of file PropertyDefinition.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ map() [4/4]

std::enable_if_t<meta::properties::MapPropertyValuePlugin<T>::value, PropertyDefinition<PropertyType>& > map ( const T values)
inline

Definition at line 165 of file PropertyDefinition.h.

◆ removeQuotes() [1/2]

bool removeQuotes

Definition at line 266 of file PropertyDefinition.hpp.

+ Here is the caller graph for this function:

◆ removeQuotes() [2/2]

void removeQuotes ( const std::string &  input,
std::string &  output 
)
static

Checks first and last character of input and in case both are quotes, they are removed and the remaining result is stored in output.

Definition at line 797 of file PropertyDefinition.hpp.

◆ setCaseInsensitive()

PropertyDefinition< PropertyType > & setCaseInsensitive ( bool  isCaseInsensitive)

Sets whether the property value matching is case insensitive.

Parameters
isCaseInsensitiveCase sensitivity state
Returns
self reference

Definition at line 150 of file PropertyDefinition.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setExpandEnvironmentVariables()

PropertyDefinition< PropertyType > & setExpandEnvironmentVariables ( bool  expand)

Sets whether for string values environment varbiale expanding should be considered.

Parameters
expandExpand entries like '${ENV_VAR}' to the according values of the environment.
Returns
self reference

Definition at line 186 of file PropertyDefinition.hpp.

◆ setFactory()

PropertyDefinition< PropertyType > & setFactory ( const PropertyFactoryFunction func)

Sets the factory function that creates the specified template type from the actual string value.

Parameters
functhe factory function
Returns
self reference

Definition at line 140 of file PropertyDefinition.hpp.

+ Here is the caller graph for this function:

◆ setMatchRegex()

PropertyDefinition< PropertyType > & setMatchRegex ( const std::string &  expr)

Sets the regular expression which the value has to be matched with.

Parameters
exprValue regular expression
Returns
self reference

Definition at line 204 of file PropertyDefinition.hpp.

◆ setMax() [1/2]

PropertyDefinition< PropertyType > & setMax ( double  max)

Sets the max allowed numeric value.

Parameters
maxMax. allowed value
Returns
self reference

Definition at line 233 of file PropertyDefinition.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setMax() [2/2]

PropertyDefinition<PropertyType>& setMax ( std::array< T, 1 >  max)
inline

Definition at line 243 of file PropertyDefinition.h.

+ Here is the call graph for this function:

◆ setMin() [1/2]

PropertyDefinition< PropertyType > & setMin ( double  min)

Sets the min allowed numeric value.

Parameters
minMin. allowed value
Returns
self reference

Definition at line 215 of file PropertyDefinition.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setMin() [2/2]

PropertyDefinition<PropertyType>& setMin ( std::array< T, 1 >  min)
inline

Definition at line 227 of file PropertyDefinition.h.

+ Here is the call graph for this function:

◆ setRemoveQuotes()

PropertyDefinition< PropertyType > & setRemoveQuotes ( bool  removeQuotes)

Sets whether for string values leading and trailing quotes should be removed.

Parameters
removeQuotesThe indicator.
Returns
self reference

Definition at line 195 of file PropertyDefinition.hpp.

◆ toString()

std::string toString ( PropertyDefinitionFormatter formatter,
const std::string &  value 
)
overridevirtual
See also
PropertyDefinitionBase::toString()

Implements PropertyDefinitionBase.

Definition at line 342 of file PropertyDefinition.hpp.

+ Here is the call graph for this function:

◆ writeValueToSetter()

void writeValueToSetter ( const std::string &  prefix,
Ice::PropertiesPtr  iceProperties 
)
overridevirtual

Implements PropertyDefinitionBase.

Definition at line 474 of file PropertyDefinition.hpp.

Member Data Documentation

◆ caseInsensitive

bool caseInsensitive
protected

Case sensitivity indicator.

Definition at line 319 of file PropertyDefinition.h.

◆ defaultValue

PropertyType defaultValue
protected

Fallback/Default property value.

Definition at line 299 of file PropertyDefinition.h.

◆ description

std::string description
protected

Property description.

Definition at line 294 of file PropertyDefinition.h.

◆ expandEnvVars

bool expandEnvVars
protected

Exand environments variables indicator (standard: true)

Definition at line 324 of file PropertyDefinition.h.

◆ factory

PropertyFactoryFunction factory
protected

Builder function.

Definition at line 309 of file PropertyDefinition.h.

◆ max

double max
protected

Upper bound of numeric values (used for numeric value retrieval without mapping)

Definition at line 339 of file PropertyDefinition.h.

◆ min

double min
protected

Lower bound of numeric values (used for numeric value retrieval without mapping)

Definition at line 345 of file PropertyDefinition.h.

◆ propertyName

std::string propertyName
protected

Property name.

Definition at line 289 of file PropertyDefinition.h.

◆ propertyValuesMap

PropertyValuesMap propertyValuesMap
protected

Main property map.

Definition at line 284 of file PropertyDefinition.h.

◆ regex

std::string regex
protected

Regular expression to approve a required value pattern.

Definition at line 314 of file PropertyDefinition.h.

◆ setterRef

PropertyType* setterRef
protected

Reference to a variable to set.

Definition at line 304 of file PropertyDefinition.h.

◆ stringRemoveQuotes

bool stringRemoveQuotes
protected

Remove leading and trailing quotes indicator (standard: true) First and last character of a string property value are checked for quotes.

E.g. "test" -> test 'test' -> test

Definition at line 333 of file PropertyDefinition.h.


The documentation for this class was generated from the following files: