LCOV - code coverage report
Current view: top level - src/marouter - ROMAEdge.h (source / functions) Coverage Total Hit
Test: lcov.info Lines: 100.0 % 6 6
Test Date: 2024-11-21 15:56:26 Functions: - 0 0

            Line data    Source code
       1              : /****************************************************************************/
       2              : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
       3              : // Copyright (C) 2001-2024 German Aerospace Center (DLR) and others.
       4              : // This program and the accompanying materials are made available under the
       5              : // terms of the Eclipse Public License 2.0 which is available at
       6              : // https://www.eclipse.org/legal/epl-2.0/
       7              : // This Source Code may also be made available under the following Secondary
       8              : // Licenses when the conditions for such availability set forth in the Eclipse
       9              : // Public License 2.0 are satisfied: GNU General Public License, version 2
      10              : // or later which is available at
      11              : // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
      12              : // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
      13              : /****************************************************************************/
      14              : /// @file    ROMAEdge.h
      15              : /// @author  Daniel Krajzewicz
      16              : /// @author  Jakob Erdmann
      17              : /// @author  Christian Roessel
      18              : /// @author  Laura Bieker
      19              : /// @author  Michael Behrisch
      20              : /// @date    Sept 2002
      21              : ///
      22              : // A basic edge for routing applications
      23              : /****************************************************************************/
      24              : #pragma once
      25              : #include <config.h>
      26              : 
      27              : #include <string>
      28              : #include <map>
      29              : #include <vector>
      30              : #include <algorithm>
      31              : #include <utils/common/ValueTimeLine.h>
      32              : #include <utils/common/SUMOVehicleClass.h>
      33              : #include <router/ROEdge.h>
      34              : 
      35              : 
      36              : // ===========================================================================
      37              : // class declarations
      38              : // ===========================================================================
      39              : class ROLane;
      40              : class ROVehicle;
      41              : 
      42              : 
      43              : // ===========================================================================
      44              : // class definitions
      45              : // ===========================================================================
      46              : /**
      47              :  * @class ROMAEdge
      48              :  * @brief A basic edge for routing applications
      49              :  *
      50              :  * The edge contains two time lines, one for the travel time and one for a second
      51              :  *  measure which may be used for computing the costs of a route. After loading
      52              :  *  the weights, it is needed to call "buildTimeLines" in order to initialise
      53              :  *  these time lines.
      54              :  */
      55              : class ROMAEdge : public ROEdge {
      56              : public:
      57              :     /** @brief Constructor
      58              :      *
      59              :      * @param[in] id The id of the edge
      60              :      * @param[in] from The node the edge begins at
      61              :      * @param[in] to The node the edge ends at
      62              :      * @param[in] index The numeric id of the edge
      63              :      */
      64              :     ROMAEdge(const std::string& id, RONode* from, RONode* to, int index, const int priority);
      65              : 
      66              : 
      67              :     /// Destructor
      68              :     virtual ~ROMAEdge();
      69              : 
      70              :     /** @brief Adds information about a connected edge.
      71              :      *
      72              :      * In addition to ROEdge::addSuccessor it keeps track of left turns.
      73              :      *
      74              :      * @param[in] s The edge to add
      75              :      * @todo What about vehicle-type aware connections?
      76              :      */
      77              :     virtual void addSuccessor(ROEdge* s, ROEdge* via = nullptr, std::string dir = "");
      78              : 
      79              :     void setFlow(const double begin, const double end, const double flow) {
      80       243384 :         myFlow.add(begin, end, flow);
      81       241444 :     }
      82              : 
      83              :     double getFlow(const double time) const {
      84       242663 :         return myFlow.getValue(time);
      85              :     }
      86              : 
      87              :     void setHelpFlow(const double begin, const double end, const double flow) {
      88         2376 :         myHelpFlow.add(begin, end, flow);
      89          619 :     }
      90              : 
      91              :     double getHelpFlow(const double time) const {
      92          619 :         return myHelpFlow.getValue(time);
      93              :     }
      94              : 
      95              : private:
      96              :     std::set<ROMAEdge*> myLeftTurns;
      97              :     ValueTimeLine<double> myFlow;
      98              :     ValueTimeLine<double> myHelpFlow;
      99              : 
     100              : private:
     101              :     /// @brief Invalidated copy constructor
     102              :     ROMAEdge(const ROMAEdge& src);
     103              : 
     104              :     /// @brief Invalidated assignment operator
     105              :     ROMAEdge& operator=(const ROMAEdge& src);
     106              : 
     107              : };
        

Generated by: LCOV version 2.0-1