#pragma once
#include <string>
#include <vector>
#include <libsumo/TraCIDefs.h>
#ifndef LIBTRACI
class MSE2Collector;
class NamedRTree;
class PositionVector;
#endif
namespace LIBSUMO_NAMESPACE {
class LaneArea {
public:
static int getJamLengthVehicle(const std::string& detID);
static double getJamLengthMeters(const std::string& detID);
static double getLastStepMeanSpeed(const std::string& detID);
static std::vector<std::string> getLastStepVehicleIDs(const std::string& detID);
static double getLastStepOccupancy(const std::string& detID);
static double getPosition(const std::string& detID);
static std::string getLaneID(const std::string& detID);
static double getLength(const std::string& detID);
static int getLastStepVehicleNumber(const std::string& detID);
static int getLastStepHaltingNumber(const std::string& detID);
static double getIntervalOccupancy(const std::string& detID);
static double getIntervalMeanSpeed(const std::string& detID);
static double getIntervalMeanTimeLoss(const std::string& detID);
static double getIntervalMaxJamLengthInMeters(const std::string& detID);
static int getIntervalVehicleNumber(const std::string& detID);
static double getLastIntervalOccupancy(const std::string& detID);
static double getLastIntervalMeanSpeed(const std::string& detID);
static double getLastIntervalMeanTimeLoss(const std::string& detID);
static double getLastIntervalMaxJamLengthInMeters(const std::string& detID);
static int getLastIntervalVehicleNumber(const std::string& detID);
static void overrideVehicleNumber(const std::string& detID, int vehNum);
LIBSUMO_ID_PARAMETER_API
LIBSUMO_SUBSCRIPTION_API
#ifndef LIBTRACI
#ifndef SWIG
static NamedRTree* getTree();
static void cleanup();
static void storeShape(const std::string& id, PositionVector& shape);
static std::shared_ptr<VariableWrapper> makeWrapper();
static bool handleVariable(const std::string& objID, const int variable, VariableWrapper* wrapper, tcpip::Storage* paramData);
private:
static MSE2Collector* getDetector(const std::string& detID);
private:
private:
static NamedRTree* myTree;
static SubscriptionResults mySubscriptionResults;
static ContextSubscriptionResults myContextSubscriptionResults;
#endif
#endif
private:
LaneArea() = delete;
};
}