Line data Source code
1 : #include "Dynamic/SUMOAdapter.hpp" 2 : 3 : #include <string> 4 : 5 : #include "Static/SUMOAdapter.hpp" 6 : 7 : using namespace std; 8 : using namespace Dynamic; 9 : 10 0 : SUMOAdapter::SUMOAdapter(): 11 0 : Static::SUMOAdapter() {} 12 : 13 0 : SUMOAdapter::SUMOAdapter(Static::SUMOAdapter &staticSUMOAdapter): 14 0 : Static::SUMOAdapter(staticSUMOAdapter) {} 15 : 16 : // clang-format off 17 0 : Env::TAZ::ID SUMOAdapter::addSumoTAZ( 18 : const SUMO::TAZ::ID &a, 19 : const list<SUMO::TAZ::Source> &sources, 20 : const list<SUMO::TAZ::Sink> &sinks 21 : ) { 22 : // clang-format on 23 0 : Static::SUMOAdapter::addSumoTAZ(a); 24 0 : sumoTAZSourcesSinks[a] = {sources, sinks}; 25 0 : return stoi(a); 26 : } 27 : 28 0 : Env::TAZ::ID SUMOAdapter::toTAZ(const SUMO::TAZ::ID &a) const { 29 0 : return stoi(a); 30 : } 31 : 32 : // clang-format off 33 : pair< 34 : Env::Edge::ID, pair< 35 : Env::Node, 36 : Env::Node 37 : > 38 0 : > SUMOAdapter::addSumoEdge( 39 : const SUMO::Network::Edge::ID &a 40 : ) { 41 : // clang-format on 42 0 : auto [edge, nodes] = Static::SUMOAdapter::addSumoEdge(a); 43 0 : return {Env::Edge::ID(edge), {Env::Node(nodes.first), Env::Node(nodes.second)}}; 44 : } 45 : 46 0 : Env::Edge::ID SUMOAdapter::addEdge() { 47 0 : return Env::Edge::ID(Static::SUMOAdapter::addEdge()); 48 : } 49 : 50 0 : bool SUMOAdapter::isEdge(const SUMO::Network::Edge::ID &a) const { 51 0 : return Static::SUMOAdapter::isEdge(a); 52 : } 53 : 54 0 : Env::TrafficLight::ID SUMOAdapter::addSumoTL(const SUMO::Network::TrafficLightLogic::ID &a) { 55 0 : return sumoTLToTL[a] = nextTL++; 56 : } 57 : 58 0 : Env::TrafficLight::ID SUMOAdapter::toTL(const SUMO::Network::TrafficLightLogic::ID &a) const { 59 0 : return sumoTLToTL.at(a); 60 : } 61 : 62 0 : const pair<Env::Node, Env::Node> SUMOAdapter::toTAZNode(const SUMO::TAZ::ID &a) const { 63 0 : return {Env::Node(Static::SUMOAdapter::toTAZNode(a).first), Env::Node(Static::SUMOAdapter::toTAZNode(a).second)}; 64 : } 65 : 66 : // clang-format off 67 : pair< 68 : list<SUMO::TAZ::Source>, 69 : list<SUMO::TAZ::Sink> 70 0 : > SUMOAdapter::toTAZEdges(const SUMO::TAZ::ID &a) const { 71 : // clang-format on 72 0 : const auto &[sources, sinks] = sumoTAZSourcesSinks.at(a); 73 0 : return {sources, sinks}; 74 : } 75 : 76 0 : const SUMO::TAZ::ID SUMOAdapter::toSumoTAZ(const Env::Node &a) const { 77 0 : return Static::SUMOAdapter::toSumoTAZ(a); 78 : } 79 : 80 0 : Env::Edge::ID SUMOAdapter::toEdge(const SUMO::Network::Edge::ID &a) const { 81 0 : return Env::Edge::ID(Static::SUMOAdapter::toEdge(a)); 82 : } 83 : 84 0 : const SUMO::Network::Edge::ID SUMOAdapter::toSumoEdge(const Env::Edge::ID &a) const { 85 0 : return Static::SUMOAdapter::toSumoEdge(a); 86 : } 87 : 88 0 : const pair<Env::Node, Env::Node> SUMOAdapter::toNodes(const SUMO::Network::Edge::ID &a) const { 89 : // clang-format off 90 0 : return { 91 0 : Env::Node(Static::SUMOAdapter::toNodes(a).first), 92 0 : Env::Node(Static::SUMOAdapter::toNodes(a).second) 93 0 : }; 94 : // clang-format on 95 : } 96 : 97 0 : bool SUMOAdapter::isSumoEdge(const Env::Edge::ID &a) const { 98 0 : return Static::SUMOAdapter::isSumoEdge(a); 99 : } 100 : 101 0 : vector<SUMO::Network::Edge::ID> SUMOAdapter::getSumoEdges() const { 102 0 : return Static::SUMOAdapter::getSumoEdges(); 103 : } 104 : 105 0 : SUMO::Network::Edge::ID SUMOAdapter::fromNodeToSumoEdge(const Env::Node &a) const { 106 0 : return Static::SUMOAdapter::fromNodeToSumoEdge(a); 107 : } 108 : 109 0 : void SUMOAdapter::clear() { 110 0 : Static::SUMOAdapter::clear(); 111 0 : } 112 : 113 0 : void SUMOAdapter::dump(ostream &os) const { 114 0 : Static::SUMOAdapter::dump(os); 115 0 : os << "sumoTLtoTL:" 116 0 : << "\n"; 117 0 : for(const auto &[sumoTL, TL]: sumoTLToTL) { 118 0 : os << "SUMO TL " << sumoTL << " → TL " << TL << "\n"; 119 : } 120 0 : }