Skip to content

Commit

Permalink
fix #14517
Browse files Browse the repository at this point in the history
  • Loading branch information
namdre committed Mar 15, 2024
1 parent 89a60b0 commit 6fb8cf1
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 3 deletions.
4 changes: 1 addition & 3 deletions src/netbuild/NBEdge.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3880,9 +3880,7 @@ NBEdge::append(NBEdge* e) {
myTo = e->myTo;
myTurnSignTarget = e->myTurnSignTarget;
myToBorder = e->myToBorder;
if (e->hasParameter("origTo")) {
setParameter("origTo", e->getParameter("origTo"));
}
mergeParameters(e->getParametersMap());
if (e->mySignalPosition != Position::INVALID) {
mySignalPosition = e->mySignalPosition;
}
Expand Down
19 changes: 19 additions & 0 deletions src/utils/common/Parameterised.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,25 @@ Parameterised::updateParameters(const Parameterised::Map& mapArg) {
}


void
Parameterised::mergeParameters(const Parameterised::Map& mapArg, const std::string separator, bool uniqueValues) {
for (const auto& keyValue : mapArg) {
if (hasParameter(keyValue.first)) {
bool append = true;
if (uniqueValues) {
if (getParameter(keyValue.first) == keyValue.second) {
append = false;
}
}
if (append) {
setParameter(keyValue.first, getParameter(keyValue.first) + separator + keyValue.second);
}
} else {
setParameter(keyValue.first, keyValue.second);
}
}
}

bool
Parameterised::hasParameter(const std::string& key) const {
return myMap.find(key) != myMap.end();
Expand Down
5 changes: 5 additions & 0 deletions src/utils/common/Parameterised.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,11 @@ class Parameterised {
*/
void updateParameters(const Parameterised::Map& mapArg);

/**@brief Adds or appends all given parameters from the map
* @param[in] mapArg The keys/values to insert
*/
void mergeParameters(const Parameterised::Map& mapArg, const std::string separator = " ", bool uniqueValues = true);

/**@brief Returns whether the parameter is set
* @param[in] key The key to ask for
* @return Whether the key is known
Expand Down

0 comments on commit 6fb8cf1

Please sign in to comment.