/****************************************************************************/1// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo2// Copyright (C) 2017-2025 German Aerospace Center (DLR) and others.3// This program and the accompanying materials are made available under the4// terms of the Eclipse Public License 2.0 which is available at5// https://www.eclipse.org/legal/epl-2.0/6// This Source Code may also be made available under the following Secondary7// Licenses when the conditions for such availability set forth in the Eclipse8// Public License 2.0 are satisfied: GNU General Public License, version 29// or later which is available at10// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html11// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later12/****************************************************************************/13/// @file MultiEntryExit.h14/// @author Michael Behrisch15/// @date 15.03.201716///17// C++ TraCI client API implementation18/****************************************************************************/19#pragma once20#include <vector>21#include <libsumo/TraCIDefs.h>222324// ===========================================================================25// class declarations26// ===========================================================================27#ifndef LIBTRACI28class MSE3Collector;29#endif303132// ===========================================================================33// class definitions34// ===========================================================================35/**36* @class MultiEntryExit37* @brief C++ TraCI client API implementation38*/39namespace LIBSUMO_NAMESPACE {40class MultiEntryExit {41public:42static std::vector<std::string> getEntryLanes(const std::string& detID);43static std::vector<std::string> getExitLanes(const std::string& detID);44static std::vector<double> getEntryPositions(const std::string& detID);45static std::vector<double> getExitPositions(const std::string& detID);4647static int getLastStepVehicleNumber(const std::string& detID);48static double getLastStepMeanSpeed(const std::string& detID);49static std::vector<std::string> getLastStepVehicleIDs(const std::string& detID);50static int getLastStepHaltingNumber(const std::string& detID);5152static double getLastIntervalMeanTravelTime(const std::string& detID);53static double getLastIntervalMeanHaltsPerVehicle(const std::string& detID);54static double getLastIntervalMeanTimeLoss(const std::string& detID);55static int getLastIntervalVehicleSum(const std::string& detID);5657LIBSUMO_ID_PARAMETER_API58LIBSUMO_SUBSCRIPTION_API5960#ifndef LIBTRACI61#ifndef SWIG62static std::shared_ptr<VariableWrapper> makeWrapper();6364static bool handleVariable(const std::string& objID, const int variable, VariableWrapper* wrapper, tcpip::Storage* paramData);6566static MSE3Collector* getDetector(const std::string& detID);6768private:69static SubscriptionResults mySubscriptionResults;70static ContextSubscriptionResults myContextSubscriptionResults;71#endif72#endif7374private:75/// @brief invalidated standard constructor76MultiEntryExit() = delete;7778};798081}828384