58 for (
const auto& keyValue : mapArg) {
66 for (
const auto& keyValue : mapArg) {
91 const auto i =
myMap.find(key);
92 if (i !=
myMap.end()) {
101 const auto i =
myMap.find(key);
102 if (i !=
myMap.end()) {
106 WRITE_WARNINGF(
TL(
"Invalid conversion from string to double (%)"), i->second);
109 WRITE_WARNING(
TL(
"Invalid conversion from string to double (empty value)"));
134 for (
const auto& keyValue :
myMap) {
138 result += keyValue.first + kvsep + keyValue.second;
158 for (
const auto& keyValue : parameters) {
169 for (
const auto& keyValue :
myMap) {
182 for (
const auto& keyValueStr : parameters) {
201 for (
const auto& keyValueStr : parameters) {
209 if (!((letter >=
'a') && (letter <=
'z')) && !((letter >=
'A') && (letter <=
'Z'))) {
212 WRITE_WARNINGF(
TL(
"Invalid format of attribute '%'. Attribute must start with a letter"), attr);
234 if (value.find(sep) != std::string::npos || value.find(kvsep) == std::string::npos) {
240 if (keyValueStr.size() == 2) {
#define WRITE_WARNINGF(...)
#define WRITE_WARNING(msg)
@ SUMO_TAG_PARAM
parameter associated to a certain key
Static storage of an output device and its base (abstract) implementation.
OutputDevice & writeAttr(const SumoXMLAttr attr, const T &val)
writes a named attribute
OutputDevice & openTag(const std::string &xmlElement)
Opens an XML tag.
bool closeTag(const std::string &comment="")
Closes the most recently opened tag and optionally adds a comment.
An upper class for objects with additional parameters.
static bool areAttributesValid(const std::string &value, bool report=false, const std::string kvsep="=", const std::string sep="|")
check if given string can be parsed to an attributes map "key1=value1|key2=value2|....
static bool isParameterValid(const std::string &value, const std::string &kvsep, const std::string &sep)
check if given string can be parsed to a parameter of type "key=value"
Parameterised::Map myMap
The key->value map.
static bool areParametersValid(const std::string &value, bool report=false, const std::string kvsep="=", const std::string sep="|")
check if given string can be parsed to a parameters map "key1=value1|key2=value2|....
void unsetParameter(const std::string &key)
Removes a parameter.
bool hasParameter(const std::string &key) const
Returns whether the parameter is set.
std::map< std::string, std::string > Map
parameters map
double getDouble(const std::string &key, const double defaultValue) const
Returns the value for a given key converted to a double.
Parameterised()
Default constructor.
void setParameters(const Parameterised ¶ms)
set the inner key/value map in map<string, string> format
void mergeParameters(const Parameterised::Map &mapArg, const std::string separator=" ", bool uniqueValues=true)
Adds or appends all given parameters from the map.
void setParametersStr(const std::string ¶msString, const std::string kvsep="=", const std::string sep="|")
set the inner key/value map in string format "key1=value1|key2=value2|...|keyN=valueN"
virtual ~Parameterised()
Destructor.
void clearParameter()
Clears the parameter map.
virtual const std::string getParameter(const std::string &key, const std::string defaultValue="") const
Returns the value for a given key.
const Parameterised::Map & getParametersMap() const
Returns the inner key/value map.
void writeParams(OutputDevice &device) const
write Params in the given outputdevice
virtual void setParameter(const std::string &key, const std::string &value)
Sets a parameter.
std::string getParametersStr(const std::string kvsep="=", const std::string sep="|") const
Returns the inner key/value map in string format "key1=value1|key2=value2|...|keyN=valueN".
void updateParameters(const Parameterised::Map &mapArg)
Adds or updates all given parameters from the map.
static bool isValidParameterKey(const std::string &value)
whether the given string is a valid key for a parameter
std::vector< std::string > getVector()
return vector of strings
static double toDouble(const std::string &sData)
converts a string into the double value described by it by calling the char-type converter
static std::string escapeXML(const std::string &orig, const bool maskDoubleHyphen=false)
Replaces the standard escapes by their XML entities.