Eclipse SUMO - Simulation of Urban MObility
VehicleType.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3 // Copyright (C) 2017-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 /****************************************************************************/
18 // C++ TraCI client API implementation
19 /****************************************************************************/
20 
21 #pragma once
22 #include <string>
23 #include <libsumo/TraCIDefs.h>
24 #include <libsumo/TraCIConstants.h>
25 
26 
27 #define LIBSUMO_VEHICLE_TYPE_GETTER \
28 static double getLength(const std::string& typeID); \
29 static double getMaxSpeed(const std::string& typeID); \
30 static std::string getVehicleClass(const std::string& typeID); \
31 static double getSpeedFactor(const std::string& typeID); \
32 static double getAccel(const std::string& typeID); \
33 static double getDecel(const std::string& typeID); \
34 static double getEmergencyDecel(const std::string& typeID); \
35 static double getApparentDecel(const std::string& typeID); \
36 static double getImperfection(const std::string& typeID); \
37 static double getTau(const std::string& typeID); \
38 static std::string getEmissionClass(const std::string& typeID); \
39 static std::string getShapeClass(const std::string& typeID); \
40 static double getMinGap(const std::string& typeID); \
41 static double getWidth(const std::string& typeID); \
42 static double getHeight(const std::string& typeID); \
43 static double getMass(const std::string& typeID); \
44 static libsumo::TraCIColor getColor(const std::string& typeID); \
45 static double getMinGapLat(const std::string& typeID); \
46 static double getMaxSpeedLat(const std::string& typeID); \
47 static std::string getLateralAlignment(const std::string& typeID); \
48 static int getPersonCapacity(const std::string& typeID); \
49 static double getActionStepLength(const std::string& typeID); \
50 \
51 static double getSpeedDeviation(const std::string& typeID); \
52 static double getBoardingDuration(const std::string& typeID); \
53 static double getImpatience(const std::string& typeID); \
54 
55 
56 #define LIBSUMO_VEHICLE_TYPE_SETTER \
57 static void setLength(const std::string& typeID, double length); \
58 static void setMaxSpeed(const std::string& typeID, double speed); \
59 static void setVehicleClass(const std::string& typeID, const std::string& clazz); \
60 static void setSpeedFactor(const std::string& typeID, double factor); \
61 static void setAccel(const std::string& typeID, double accel); \
62 static void setDecel(const std::string& typeID, double decel); \
63 static void setEmergencyDecel(const std::string& typeID, double decel); \
64 static void setApparentDecel(const std::string& typeID, double decel); \
65 static void setImperfection(const std::string& typeID, double imperfection); \
66 static void setTau(const std::string& typeID, double tau); \
67 static void setEmissionClass(const std::string& typeID, const std::string& clazz); \
68 static void setShapeClass(const std::string& typeID, const std::string& shapeClass); \
69 static void setWidth(const std::string& typeID, double width); \
70 static void setHeight(const std::string& typeID, double height); \
71 static void setMass(const std::string& typeID, double mass); \
72 static void setColor(const std::string& typeID, const libsumo::TraCIColor& color); \
73 static void setMinGap(const std::string& typeID, double minGap); \
74 static void setMinGapLat(const std::string& typeID, double minGapLat); \
75 static void setMaxSpeedLat(const std::string& typeID, double speed); \
76 static void setLateralAlignment(const std::string& typeID, const std::string& latAlignment); \
77 static void setActionStepLength(const std::string& typeID, double actionStepLength, bool resetActionOffset=true); \
78 static void setBoardingDuration(const std::string& typeID, double boardingDuration); \
79 static void setImpatience(const std::string& typeID, double impatience); \
80 
81 // ===========================================================================
82 // class declarations
83 // ===========================================================================
84 #ifndef LIBTRACI
85 class MSVehicleType;
86 #endif
87 
88 
89 // ===========================================================================
90 // class definitions
91 // ===========================================================================
96 namespace LIBSUMO_NAMESPACE {
97 class VehicleType {
98 public:
101 
103  static void copy(const std::string& origTypeID, const std::string& newTypeID);
104 
105  static void setSpeedDeviation(const std::string& typeID, double deviation);
106  static double getScale(const std::string& typeID);
107  static void setScale(const std::string& typeID, double value);
108 
110 
111 #ifndef LIBTRACI
112 #ifndef SWIG
113  static MSVehicleType* getVType(std::string id);
114 
115  static std::shared_ptr<VariableWrapper> makeWrapper();
116 
117  static bool handleVariable(const std::string& objID, const int variable, VariableWrapper* wrapper, tcpip::Storage* paramData);
118 
119  static bool handleVariableWithID(const std::string& objID, const std::string& typeID, const int variable, VariableWrapper* wrapper, tcpip::Storage* paramData);
120 
121 private:
124 
125 #endif
126 #endif
127 
128 private:
130  VehicleType() = delete;
131 };
132 
133 
134 }
#define LIBSUMO_ID_PARAMETER_API
Definition: TraCIDefs.h:116
#define LIBSUMO_SUBSCRIPTION_API
Definition: TraCIDefs.h:62
#define LIBSUMO_VEHICLE_TYPE_GETTER
Definition: VehicleType.h:27
#define LIBSUMO_VEHICLE_TYPE_SETTER
Definition: VehicleType.h:56
VehicleType()=delete
invalidated standard constructor
static void setSpeedDeviation(const std::string &typeID, double deviation)
static void setScale(const std::string &typeID, double value)
static bool handleVariable(const std::string &objID, const int variable, VariableWrapper *wrapper, tcpip::Storage *paramData)
static std::shared_ptr< VariableWrapper > makeWrapper()
static double getScale(const std::string &typeID)
static LIBSUMO_SUBSCRIPTION_API MSVehicleType * getVType(std::string id)
static SubscriptionResults mySubscriptionResults
Definition: VehicleType.h:122
LIBSUMO_VEHICLE_TYPE_GETTER LIBSUMO_ID_PARAMETER_API static LIBSUMO_VEHICLE_TYPE_SETTER void copy(const std::string &origTypeID, const std::string &newTypeID)
static ContextSubscriptionResults myContextSubscriptionResults
Definition: VehicleType.h:123
static bool handleVariableWithID(const std::string &objID, const std::string &typeID, const int variable, VariableWrapper *wrapper, tcpip::Storage *paramData)
The car-following model and parameter.
Definition: MSVehicleType.h:63
std::map< std::string, libsumo::SubscriptionResults > ContextSubscriptionResults
Definition: TraCIDefs.h:338
std::map< std::string, libsumo::TraCIResults > SubscriptionResults
{object->{variable->value}}
Definition: TraCIDefs.h:337