LCOV - code coverage report
Current view: top level - app/src/Static - SUMOAdapter.cpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 41 64 64.1 %
Date: 2023-08-17 16:45:52 Functions: 10 14 71.4 %

          Line data    Source code
       1             : #include "Static/SUMOAdapter.hpp"
       2             : 
       3             : #include <stdexcept>
       4             : 
       5             : using namespace std;
       6             : using namespace Static;
       7             : 
       8             : typedef Network::Node               Node;
       9             : typedef Network::Edge::ID           Edge;
      10             : typedef SUMO::Network::Junction::ID SumoJunction;
      11             : typedef SUMO::TAZ::ID               TAZ;
      12             : typedef SUMO::Network::Edge::ID     SumoEdge;
      13             : 
      14             : // Node SUMOAdapter::addNode() {
      15             : //     Edge b = nextNode++;
      16             : //     return b;
      17             : // }
      18             : 
      19        7534 : pair<Edge, pair<Node, Node>> SUMOAdapter::addSumoEdge(const SumoEdge &a) {
      20        7534 :     Edge                         e = nextEdge++;
      21        7534 :     Node                         u = nextNode++, v = nextNode++;
      22        7534 :     pair<Edge, pair<Node, Node>> ret(e, {u, v});
      23             : 
      24        7534 :     edge2sumoEdge[ret.first]         = a;
      25        7534 :     sumoEdge2edge[a]                 = ret.first;
      26        7534 :     sumoEdge2nodes[a]                = ret.second;
      27        7534 :     node2sumoEdge[ret.second.first]  = a;
      28        7534 :     node2sumoEdge[ret.second.second] = a;
      29        7534 :     return ret;
      30             : }
      31         119 : pair<Node, Node> SUMOAdapter::addSumoTAZ(const TAZ &a) {
      32         119 :     Node b          = nextNode++;
      33         119 :     Node c          = nextNode++;
      34         119 :     node2sumoTAZ[b] = a;
      35         119 :     node2sumoTAZ[c] = a;
      36         119 :     sumoTAZ2node[a] = pair<Node, Node>(b, c);
      37             : 
      38         119 :     return pair<Node, Node>(b, c);
      39             : }
      40             : 
      41       13566 : Edge SUMOAdapter::addEdge() {
      42       13566 :     return nextEdge++;
      43             : }
      44             : 
      45           0 : bool SUMOAdapter::isEdge(const SumoEdge &a) const {
      46           0 :     return sumoEdge2edge.count(a);
      47             : }
      48             : 
      49       14618 : const pair<Node, Node> &SUMOAdapter::toTAZNode(const TAZ &a) const {
      50       14618 :     return sumoTAZ2node.at(a);
      51             : }
      52           0 : const TAZ &SUMOAdapter::toSumoTAZ(const Node &a) const {
      53           0 :     return node2sumoTAZ.at(a);
      54             : }
      55             : 
      56      185028 : const Edge &SUMOAdapter::toEdge(const SumoEdge &a) const {
      57      185028 :     try {
      58      185028 :         return sumoEdge2edge.at(a);
      59           0 :     } catch(const out_of_range &e) {
      60           0 :         throw out_of_range("SUMOAdapter::toEdge: Could not find SUMO edge " + a);
      61             :     }
      62             : }
      63       37614 : const SumoEdge &SUMOAdapter::toSumoEdge(const Edge &a) const {
      64       37614 :     return edge2sumoEdge.at(a);
      65             : }
      66       22812 : const pair<Node, Node> &SUMOAdapter::toNodes(const SumoEdge &a) const {
      67       22812 :     return sumoEdge2nodes.at(a);
      68             : }
      69             : 
      70      188982 : bool SUMOAdapter::isSumoEdge(const Edge &a) const {
      71      188982 :     return edge2sumoEdge.count(a) > 0;
      72             : }
      73             : 
      74           0 : vector<SumoEdge> SUMOAdapter::getSumoEdges() const {
      75           0 :     vector<SumoEdge> ret;
      76           0 :     ret.reserve(sumoEdge2edge.size());
      77           0 :     for(const auto &p: sumoEdge2edge) {
      78           0 :         ret.push_back(p.first);
      79             :     }
      80           0 :     return ret;
      81             : }
      82             : 
      83       14442 : SumoEdge SUMOAdapter::fromNodeToSumoEdge(const Node &a) const {
      84       14442 :     return node2sumoEdge.at(a);
      85             : }
      86             : 
      87           3 : void SUMOAdapter::clear() {
      88           3 :     edge2sumoEdge.clear();
      89           3 :     sumoEdge2edge.clear();
      90           3 :     sumoEdge2nodes.clear();
      91           3 :     node2sumoTAZ.clear();
      92           3 :     sumoTAZ2node.clear();
      93           3 :     nextNode = 0;
      94           3 :     nextEdge = 0;
      95           3 : }
      96             : 
      97           0 : void SUMOAdapter::dump(ostream &os) const {
      98           0 :     stringstream ss;
      99           0 :     ss << "SUMOAdapter::dump()" << endl;
     100           0 :     ss << "edge2sumoEdge:" << endl;
     101           0 :     for(const auto &[edgeID, sumoEdgeID]: edge2sumoEdge) {
     102           0 :         const auto &[u, v] = sumoEdge2nodes.at(sumoEdgeID);
     103           0 :         ss << "Edge " << edgeID
     104           0 :            << " (nodes " << u << ", " << v
     105           0 :            << ") → SUMO edge " << sumoEdgeID << endl;
     106             :     }
     107           0 :     os << ss.rdbuf();
     108           0 : }

Generated by: LCOV version 1.14