New package: sumo-0.32.0
This commit is contained in:
parent
d683a9a941
commit
8a04be1e8d
2 changed files with 348 additions and 0 deletions
335
srcpkgs/sumo/patches/0001-Rework-the-ComparatorIdLess.patch
Normal file
335
srcpkgs/sumo/patches/0001-Rework-the-ComparatorIdLess.patch
Normal file
|
@ -0,0 +1,335 @@
|
|||
From 59ee8a9c8bceb09fa4e90234e823d8004da7211f Mon Sep 17 00:00:00 2001
|
||||
From: Max Schettler <schettle@mail.uni-paderborn.de>
|
||||
Date: Tue, 29 May 2018 14:08:48 +0200
|
||||
Subject: [PATCH] Rework the ComparatorIdLess
|
||||
|
||||
This makes it compile with current compilers (GCC >= 8, Clang >= 6).
|
||||
Fixes #4110.
|
||||
|
||||
Signed-off-by: Max Schettler <schettle@mail.uni-paderborn.de>
|
||||
---
|
||||
src/jtrrouter/ROJTREdge.h | 2 +-
|
||||
src/microsim/MSEdgeControl.cpp | 2 +-
|
||||
src/microsim/MSEdgeControl.h | 2 +-
|
||||
src/microsim/MSLane.cpp | 8 +++---
|
||||
src/microsim/MSLane.h | 4 +--
|
||||
src/microsim/MSLink.h | 4 +--
|
||||
src/microsim/devices/MSDevice_Tripinfo.h | 2 +-
|
||||
src/microsim/devices/MSDevice_Vehroutes.cpp | 2 +-
|
||||
src/microsim/devices/MSDevice_Vehroutes.h | 2 +-
|
||||
src/microsim/traffic_lights/MSRailSignal.cpp | 2 +-
|
||||
src/netbuild/NBAlgorithms_Ramps.cpp | 8 +++---
|
||||
src/netbuild/NBEdgeCont.cpp | 4 +--
|
||||
src/netbuild/NBNodeCont.cpp | 4 +--
|
||||
src/utils/common/Named.h | 28 +++++++-------------
|
||||
src/utils/vehicle/SUMOVehicle.h | 3 ---
|
||||
15 files changed, 33 insertions(+), 44 deletions(-)
|
||||
|
||||
diff --git src/jtrrouter/ROJTREdge.h src/jtrrouter/ROJTREdge.h
|
||||
index dbaf9508bb..ec8a63759e 100644
|
||||
--- src/jtrrouter/ROJTREdge.h
|
||||
+++ src/jtrrouter/ROJTREdge.h
|
||||
@@ -111,7 +111,7 @@ public:
|
||||
|
||||
private:
|
||||
/// @brief Definition of a map that stores the probabilities of using a certain follower over time
|
||||
- typedef std::map<ROJTREdge*, ValueTimeLine<double>*, Named::ComparatorIdLess> FollowerUsageCont;
|
||||
+ typedef std::map<ROJTREdge*, ValueTimeLine<double>*, ComparatorIdLess> FollowerUsageCont;
|
||||
|
||||
/// @brief Storage for the probabilities of using a certain follower over time
|
||||
FollowerUsageCont myFollowingDefs;
|
||||
diff --git src/microsim/MSEdgeControl.cpp src/microsim/MSEdgeControl.cpp
|
||||
index 34beb8cf96..b7eca6df46 100644
|
||||
--- src/microsim/MSEdgeControl.cpp
|
||||
+++ src/microsim/MSEdgeControl.cpp
|
||||
@@ -77,7 +77,7 @@ MSEdgeControl::~MSEdgeControl() {
|
||||
|
||||
void
|
||||
MSEdgeControl::patchActiveLanes() {
|
||||
- for (std::set<MSLane*, Named::ComparatorIdLess>::iterator i = myChangedStateLanes.begin(); i != myChangedStateLanes.end(); ++i) {
|
||||
+ for (std::set<MSLane*, ComparatorIdLess>::iterator i = myChangedStateLanes.begin(); i != myChangedStateLanes.end(); ++i) {
|
||||
LaneUsage& lu = myLanes[(*i)->getNumericalID()];
|
||||
// if the lane was inactive but is now...
|
||||
if (!lu.amActive && (*i)->getVehicleNumber() > 0) {
|
||||
diff --git src/microsim/MSEdgeControl.h src/microsim/MSEdgeControl.h
|
||||
index 64536fe25b..aeb570bc27 100644
|
||||
--- src/microsim/MSEdgeControl.h
|
||||
+++ src/microsim/MSEdgeControl.h
|
||||
@@ -220,7 +220,7 @@ private:
|
||||
std::vector<MSLane*> myWithVehicles2Integrate;
|
||||
|
||||
/// @brief Lanes which changed the state without informing the control
|
||||
- std::set<MSLane*, Named::ComparatorIdLess> myChangedStateLanes;
|
||||
+ std::set<MSLane*, ComparatorIdLess> myChangedStateLanes;
|
||||
|
||||
/// @brief The list of active (not empty) lanes
|
||||
std::vector<SUMOTime> myLastLaneChange;
|
||||
diff --git src/microsim/MSLane.cpp src/microsim/MSLane.cpp
|
||||
index 7edb512c0f..258152c83b 100644
|
||||
--- src/microsim/MSLane.cpp
|
||||
+++ src/microsim/MSLane.cpp
|
||||
@@ -1172,7 +1172,7 @@ MSLane::detectCollisions(SUMOTime timestep, const std::string& stage) {
|
||||
if (myVehicles.size() == 0 || myCollisionAction == COLLISION_ACTION_NONE) {
|
||||
return;
|
||||
}
|
||||
- std::set<const MSVehicle*, SUMOVehicle::ComparatorIdLess> toRemove;
|
||||
+ std::set<const MSVehicle*, ComparatorIdLess> toRemove;
|
||||
std::set<const MSVehicle*> toTeleport;
|
||||
if (MSGlobals::gLateralResolution <= 0 && MSGlobals::gLaneChangeDuration <= 0) {
|
||||
// no sublanes
|
||||
@@ -1304,7 +1304,7 @@ MSLane::detectCollisions(SUMOTime timestep, const std::string& stage) {
|
||||
}
|
||||
|
||||
|
||||
- for (std::set<const MSVehicle*, SUMOVehicle::ComparatorIdLess>::iterator it = toRemove.begin(); it != toRemove.end(); ++it) {
|
||||
+ for (std::set<const MSVehicle*, ComparatorIdLess>::iterator it = toRemove.begin(); it != toRemove.end(); ++it) {
|
||||
MSVehicle* veh = const_cast<MSVehicle*>(*it);
|
||||
MSLane* vehLane = veh->getLane();
|
||||
vehLane->removeVehicle(veh, MSMoveReminder::NOTIFICATION_TELEPORT, false);
|
||||
@@ -1353,7 +1353,7 @@ MSLane::detectPedestrianJunctionCollision(const MSVehicle* collider, const Posit
|
||||
|
||||
bool
|
||||
MSLane::detectCollisionBetween(SUMOTime timestep, const std::string& stage, MSVehicle* collider, MSVehicle* victim,
|
||||
- std::set<const MSVehicle*, SUMOVehicle::ComparatorIdLess>& toRemove,
|
||||
+ std::set<const MSVehicle*, ComparatorIdLess>& toRemove,
|
||||
std::set<const MSVehicle*>& toTeleport) const {
|
||||
#ifndef NO_TRACI
|
||||
if (myCollisionAction == COLLISION_ACTION_TELEPORT && ((victim->hasInfluencer() && victim->getInfluencer().isRemoteAffected(timestep)) ||
|
||||
@@ -1416,7 +1416,7 @@ MSLane::detectCollisionBetween(SUMOTime timestep, const std::string& stage, MSVe
|
||||
|
||||
void
|
||||
MSLane::handleCollisionBetween(SUMOTime timestep, const std::string& stage, MSVehicle* collider, MSVehicle* victim,
|
||||
- double gap, double latGap, std::set<const MSVehicle*, SUMOVehicle::ComparatorIdLess>& toRemove,
|
||||
+ double gap, double latGap, std::set<const MSVehicle*, ComparatorIdLess>& toRemove,
|
||||
std::set<const MSVehicle*>& toTeleport) const {
|
||||
std::string prefix = "Vehicle '" + collider->getID() + "'; collision with vehicle '" + victim->getID() ;
|
||||
if (myCollisionStopTime > 0) {
|
||||
diff --git src/microsim/MSLane.h src/microsim/MSLane.h
|
||||
index db97e5e93a..1eedbfddba 100644
|
||||
--- src/microsim/MSLane.h
|
||||
+++ src/microsim/MSLane.h
|
||||
@@ -1098,13 +1098,13 @@ protected:
|
||||
|
||||
/// @brief detect whether there is a collision between the two vehicles
|
||||
bool detectCollisionBetween(SUMOTime timestep, const std::string& stage, MSVehicle* collider, MSVehicle* victim,
|
||||
- std::set<const MSVehicle*, SUMOVehicle::ComparatorIdLess>& toRemove,
|
||||
+ std::set<const MSVehicle*, ComparatorIdLess>& toRemove,
|
||||
std::set<const MSVehicle*>& toTeleport) const;
|
||||
|
||||
/// @brief take action upon collision
|
||||
void handleCollisionBetween(SUMOTime timestep, const std::string& stage, MSVehicle* collider, MSVehicle* victim,
|
||||
double gap, double latGap,
|
||||
- std::set<const MSVehicle*, SUMOVehicle::ComparatorIdLess>& toRemove,
|
||||
+ std::set<const MSVehicle*, ComparatorIdLess>& toRemove,
|
||||
std::set<const MSVehicle*>& toTeleport) const;
|
||||
|
||||
/// @brief compute maximum braking distance on this lane
|
||||
diff --git src/microsim/MSLink.h src/microsim/MSLink.h
|
||||
index 97cf763f32..caeced9cd9 100644
|
||||
--- src/microsim/MSLink.h
|
||||
+++ src/microsim/MSLink.h
|
||||
@@ -204,7 +204,7 @@ public:
|
||||
ApproachingVehicleInformation getApproaching(const SUMOVehicle* veh) const;
|
||||
|
||||
/// @brief return all approaching vehicles
|
||||
- const std::map<const SUMOVehicle*, ApproachingVehicleInformation, SUMOVehicle::ComparatorIdLess>& getApproaching() const {
|
||||
+ const std::map<const SUMOVehicle*, ApproachingVehicleInformation, ComparatorIdLess>& getApproaching() const {
|
||||
return myApproachingVehicles;
|
||||
}
|
||||
|
||||
@@ -529,7 +529,7 @@ private:
|
||||
/// @brief The lane approaching this link
|
||||
MSLane* myLaneBefore;
|
||||
|
||||
- std::map<const SUMOVehicle*, ApproachingVehicleInformation, SUMOVehicle::ComparatorIdLess> myApproachingVehicles;
|
||||
+ std::map<const SUMOVehicle*, ApproachingVehicleInformation, ComparatorIdLess> myApproachingVehicles;
|
||||
std::set<MSLink*> myBlockedFoeLinks;
|
||||
|
||||
/// @brief The position within this respond
|
||||
diff --git src/microsim/devices/MSDevice_Tripinfo.h src/microsim/devices/MSDevice_Tripinfo.h
|
||||
index fb72281c66..886c1148b0 100644
|
||||
--- src/microsim/devices/MSDevice_Tripinfo.h
|
||||
+++ src/microsim/devices/MSDevice_Tripinfo.h
|
||||
@@ -228,7 +228,7 @@ private:
|
||||
SUMOTime myMesoTimeLoss;
|
||||
|
||||
/// @brief devices which may still need to produce output
|
||||
- typedef std::set<const MSDevice_Tripinfo*, Named::NamedLikeComparatorIdLess<MSDevice_Tripinfo> > DeviceSet;
|
||||
+ typedef std::set<const MSDevice_Tripinfo*, ComparatorIdLess > DeviceSet;
|
||||
|
||||
static DeviceSet myPendingOutput;
|
||||
|
||||
diff --git src/microsim/devices/MSDevice_Vehroutes.cpp src/microsim/devices/MSDevice_Vehroutes.cpp
|
||||
index a8d4901c85..43094b83c6 100644
|
||||
--- src/microsim/devices/MSDevice_Vehroutes.cpp
|
||||
+++ src/microsim/devices/MSDevice_Vehroutes.cpp
|
||||
@@ -384,7 +384,7 @@ MSDevice_Vehroutes::addRoute() {
|
||||
|
||||
void
|
||||
MSDevice_Vehroutes::generateOutputForUnfinished() {
|
||||
- for (std::map<const SUMOVehicle*, MSDevice_Vehroutes*, Named::NamedLikeComparatorIdLess<SUMOVehicle> >::const_iterator it = myStateListener.myDevices.begin();
|
||||
+ for (std::map<const SUMOVehicle*, MSDevice_Vehroutes*, ComparatorIdLess >::const_iterator it = myStateListener.myDevices.begin();
|
||||
it != myStateListener.myDevices.end(); ++it) {
|
||||
if (it->first->hasDeparted()) {
|
||||
it->second->writeOutput(false);
|
||||
diff --git src/microsim/devices/MSDevice_Vehroutes.h src/microsim/devices/MSDevice_Vehroutes.h
|
||||
index 4586587c0a..8121a406fa 100644
|
||||
--- src/microsim/devices/MSDevice_Vehroutes.h
|
||||
+++ src/microsim/devices/MSDevice_Vehroutes.h
|
||||
@@ -218,7 +218,7 @@ private:
|
||||
void vehicleStateChanged(const SUMOVehicle* const vehicle, MSNet::VehicleState to);
|
||||
|
||||
/// @brief A map for internal notification
|
||||
- std::map<const SUMOVehicle*, MSDevice_Vehroutes*, SUMOVehicle::ComparatorIdLess> myDevices;
|
||||
+ std::map<const SUMOVehicle*, MSDevice_Vehroutes*, ComparatorIdLess> myDevices;
|
||||
|
||||
};
|
||||
|
||||
diff --git src/microsim/traffic_lights/MSRailSignal.cpp src/microsim/traffic_lights/MSRailSignal.cpp
|
||||
index 4506fe6495..45db95fd14 100644
|
||||
--- src/microsim/traffic_lights/MSRailSignal.cpp
|
||||
+++ src/microsim/traffic_lights/MSRailSignal.cpp
|
||||
@@ -215,7 +215,7 @@ MSRailSignal::getAppropriateState() {
|
||||
std::map<const MSLane*, const MSLink*>::iterator it = mySucceedingBlocksIncommingLinks.find(lane);
|
||||
if (it != mySucceedingBlocksIncommingLinks.end()) {
|
||||
const MSLink* inCommingLing = it->second;
|
||||
- const std::map<const SUMOVehicle*, MSLink::ApproachingVehicleInformation, SUMOVehicle::ComparatorIdLess> approaching = inCommingLing->getApproaching();
|
||||
+ const std::map<const SUMOVehicle*, MSLink::ApproachingVehicleInformation, ComparatorIdLess> approaching = inCommingLing->getApproaching();
|
||||
std::map<const SUMOVehicle*, MSLink::ApproachingVehicleInformation>::const_iterator apprIt = approaching.begin();
|
||||
for (; apprIt != approaching.end(); apprIt++) {
|
||||
MSLink::ApproachingVehicleInformation info = apprIt->second;
|
||||
diff --git src/netbuild/NBAlgorithms_Ramps.cpp src/netbuild/NBAlgorithms_Ramps.cpp
|
||||
index 38a0e23dc1..b6c6cae2bd 100644
|
||||
--- src/netbuild/NBAlgorithms_Ramps.cpp
|
||||
+++ src/netbuild/NBAlgorithms_Ramps.cpp
|
||||
@@ -84,8 +84,8 @@ NBRampsComputer::computeRamps(NBNetBuilder& nb, OptionsCont& oc) {
|
||||
NBDistrictCont& dc = nb.getDistrictCont();
|
||||
|
||||
// if an edge is part of two ramps, ordering is important
|
||||
- std::set<NBNode*, Named::ComparatorIdLess> potOnRamps;
|
||||
- std::set<NBNode*, Named::ComparatorIdLess> potOffRamps;
|
||||
+ std::set<NBNode*, ComparatorIdLess> potOnRamps;
|
||||
+ std::set<NBNode*, ComparatorIdLess> potOffRamps;
|
||||
for (std::map<std::string, NBNode*>::const_iterator i = nc.begin(); i != nc.end(); ++i) {
|
||||
NBNode* cur = (*i).second;
|
||||
if (mayNeedOnRamp(cur, minHighwaySpeed, maxRampSpeed, noramps)) {
|
||||
@@ -95,10 +95,10 @@ NBRampsComputer::computeRamps(NBNetBuilder& nb, OptionsCont& oc) {
|
||||
potOffRamps.insert(cur);
|
||||
}
|
||||
}
|
||||
- for (std::set<NBNode*, Named::ComparatorIdLess>::const_iterator i = potOnRamps.begin(); i != potOnRamps.end(); ++i) {
|
||||
+ for (std::set<NBNode*, ComparatorIdLess>::const_iterator i = potOnRamps.begin(); i != potOnRamps.end(); ++i) {
|
||||
buildOnRamp(*i, nc, ec, dc, rampLength, dontSplit);
|
||||
}
|
||||
- for (std::set<NBNode*, Named::ComparatorIdLess>::const_iterator i = potOffRamps.begin(); i != potOffRamps.end(); ++i) {
|
||||
+ for (std::set<NBNode*, ComparatorIdLess>::const_iterator i = potOffRamps.begin(); i != potOffRamps.end(); ++i) {
|
||||
buildOffRamp(*i, nc, ec, dc, rampLength, dontSplit);
|
||||
}
|
||||
}
|
||||
diff --git src/netbuild/NBEdgeCont.cpp src/netbuild/NBEdgeCont.cpp
|
||||
index fb47bfeb30..67d97476fe 100644
|
||||
--- src/netbuild/NBEdgeCont.cpp
|
||||
+++ src/netbuild/NBEdgeCont.cpp
|
||||
@@ -1167,7 +1167,7 @@ NBEdgeCont::remapIDs(bool numericaIDs, bool reservedIDs) {
|
||||
avoid.insert(avoid.end(), reserve.begin(), reserve.end());
|
||||
}
|
||||
IDSupplier idSupplier("", avoid);
|
||||
- std::set<NBEdge*, Named::ComparatorIdLess> toChange;
|
||||
+ std::set<NBEdge*, ComparatorIdLess> toChange;
|
||||
for (EdgeCont::iterator it = myEdges.begin(); it != myEdges.end(); it++) {
|
||||
if (numericaIDs) {
|
||||
try {
|
||||
@@ -1181,7 +1181,7 @@ NBEdgeCont::remapIDs(bool numericaIDs, bool reservedIDs) {
|
||||
}
|
||||
}
|
||||
const bool origNames = OptionsCont::getOptions().getBool("output.original-names");
|
||||
- for (std::set<NBEdge*, Named::ComparatorIdLess>::iterator it = toChange.begin(); it != toChange.end(); ++it) {
|
||||
+ for (std::set<NBEdge*, ComparatorIdLess>::iterator it = toChange.begin(); it != toChange.end(); ++it) {
|
||||
NBEdge* edge = *it;
|
||||
myEdges.erase(edge->getID());
|
||||
if (origNames) {
|
||||
diff --git src/netbuild/NBNodeCont.cpp src/netbuild/NBNodeCont.cpp
|
||||
index b511e5a094..5768205f04 100644
|
||||
--- src/netbuild/NBNodeCont.cpp
|
||||
+++ src/netbuild/NBNodeCont.cpp
|
||||
@@ -1306,7 +1306,7 @@ NBNodeCont::remapIDs(bool numericaIDs, bool reservedIDs) {
|
||||
avoid.insert(avoid.end(), reserve.begin(), reserve.end());
|
||||
}
|
||||
IDSupplier idSupplier("", avoid);
|
||||
- std::set<NBNode*, Named::ComparatorIdLess> toChange;
|
||||
+ std::set<NBNode*, ComparatorIdLess> toChange;
|
||||
for (NodeCont::iterator it = myNodes.begin(); it != myNodes.end(); it++) {
|
||||
if (numericaIDs) {
|
||||
try {
|
||||
@@ -1320,7 +1320,7 @@ NBNodeCont::remapIDs(bool numericaIDs, bool reservedIDs) {
|
||||
}
|
||||
}
|
||||
const bool origNames = OptionsCont::getOptions().getBool("output.original-names");
|
||||
- for (std::set<NBNode*, Named::ComparatorIdLess>::iterator it = toChange.begin(); it != toChange.end(); ++it) {
|
||||
+ for (std::set<NBNode*, ComparatorIdLess>::iterator it = toChange.begin(); it != toChange.end(); ++it) {
|
||||
NBNode* node = *it;
|
||||
myNodes.erase(node->getID());
|
||||
if (origNames) {
|
||||
diff --git src/utils/common/Named.h src/utils/common/Named.h
|
||||
index c88d96700c..3b01bd1b9d 100644
|
||||
--- src/utils/common/Named.h
|
||||
+++ src/utils/common/Named.h
|
||||
@@ -35,6 +35,16 @@
|
||||
#include <set>
|
||||
|
||||
|
||||
+/// @brief Function-object for stable sorting of objects acting like Named without being derived (SUMOVehicle)
|
||||
+// @note Numbers of different lenghts will not be ordered by alphanumerical sorting
|
||||
+struct ComparatorIdLess {
|
||||
+ template<class T>
|
||||
+ bool operator()(const T* const a, const T* const b) const {
|
||||
+ return a->getID() < b->getID();
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
+
|
||||
// ===========================================================================
|
||||
// class definitions
|
||||
// ===========================================================================
|
||||
@@ -75,24 +85,6 @@ public:
|
||||
}
|
||||
|
||||
|
||||
- /// @brief Function-object for stable sorting in containers
|
||||
- // @note Numbers of different lengths will not be ordered by alphanumerical sorting
|
||||
- struct ComparatorIdLess {
|
||||
- bool operator()(Named* const a, Named* const b) const {
|
||||
- return a->getID() < b->getID();
|
||||
- }
|
||||
- };
|
||||
-
|
||||
- /// @brief Function-object for stable sorting of objects acting like Named without being derived (SUMOVehicle)
|
||||
- // @note Numbers of different lenghts will not be ordered by alphanumerical sorting
|
||||
- template <class NamedLike>
|
||||
- struct NamedLikeComparatorIdLess {
|
||||
- bool operator()(const NamedLike* const a, const NamedLike* const b) const {
|
||||
- return a->getID() < b->getID();
|
||||
- }
|
||||
- };
|
||||
-
|
||||
-
|
||||
/** @class StoringVisitor
|
||||
* @brief Allows to store the object; used as context while traveling the rtree in TraCI
|
||||
*/
|
||||
diff --git src/utils/vehicle/SUMOVehicle.h src/utils/vehicle/SUMOVehicle.h
|
||||
index 8e7af4ae76..43c783c8b0 100644
|
||||
--- src/utils/vehicle/SUMOVehicle.h
|
||||
+++ src/utils/vehicle/SUMOVehicle.h
|
||||
@@ -75,9 +75,6 @@ public:
|
||||
*/
|
||||
virtual double getPreviousSpeed() const = 0;
|
||||
|
||||
-
|
||||
- typedef Named::NamedLikeComparatorIdLess<SUMOVehicle> ComparatorIdLess;
|
||||
-
|
||||
/// @brief Destructor
|
||||
virtual ~SUMOVehicle() {}
|
||||
|
||||
--
|
||||
2.18.0
|
||||
|
13
srcpkgs/sumo/template
Normal file
13
srcpkgs/sumo/template
Normal file
|
@ -0,0 +1,13 @@
|
|||
# Template file for 'sumo'
|
||||
pkgname=sumo
|
||||
version=0.32.0
|
||||
revision=1
|
||||
build_style=gnu-configure
|
||||
hostmakedepends="pkg-config libgdal-tools"
|
||||
makedepends="fox-devel libgdal-devel libxerces-c-devel proj-devel"
|
||||
short_desc="SUMO (Simulation of Urban MObility) and included applications"
|
||||
maintainer="Warrior Graph <marques@larces.uece.br>"
|
||||
license="EPL-2.0"
|
||||
homepage="http://sumo.sourceforge.net/"
|
||||
distfiles="${SOURCEFORGE_SITE}/${pkgname}/${pkgname}-src-${version}.tar.gz"
|
||||
checksum=00753ca57a9911f0c99202505a6b05b1777168134842d7924fd827766642608a
|
Loading…
Reference in a new issue