37 mySumoBaseObjectParent(parent),
40 myVehicleTypeParameter(
""),
41 myDefinedVehicleTypeParameter(false),
42 myDefinedVehicleParameter(false),
43 myDefinedStopParameter(false) {
53 if (mySumoBaseObjectParent) {
54 mySumoBaseObjectParent->removeSumoBaseObjectChild(
this);
57 while (mySumoBaseObjectChildren.size() > 0) {
58 delete mySumoBaseObjectChildren.back();
70 myStringAttributes.clear();
71 myIntAttributes.clear();
72 myDoubleAttributes.clear();
73 myBoolAttributes.clear();
74 myPositionAttributes.clear();
75 myTimeAttributes.clear();
76 myColorAttributes.clear();
77 myStringListAttributes.clear();
78 myPositionVectorAttributes.clear();
80 mySumoBaseObjectChildren.clear();
82 myDefinedVehicleTypeParameter =
false;
83 myDefinedVehicleParameter =
false;
84 myDefinedStopParameter =
false;
86 while (mySumoBaseObjectChildren.size() > 0) {
87 delete mySumoBaseObjectChildren.back();
106 return mySumoBaseObjectParent;
110std::map<std::string, std::string>
112 std::map<std::string, std::string> result;
113 for (
const auto& attr : myStringAttributes) {
114 result[
toString(attr.first)] = attr.second;
116 for (
const auto& attr : myIntAttributes) {
119 for (
const auto& attr : myDoubleAttributes) {
122 for (
const auto& attr : myBoolAttributes) {
125 for (
const auto& attr : myPositionAttributes) {
128 for (
const auto& attr : myTimeAttributes) {
131 for (
const auto& attr : myColorAttributes) {
134 for (
const auto& attr : myStringListAttributes) {
137 for (
const auto& attr : myPositionVectorAttributes) {
146 if (hasStringAttribute(attr)) {
147 return myStringAttributes.at(attr);
149 handleAttributeError(attr,
"string");
157 if (hasIntAttribute(attr)) {
158 return myIntAttributes.at(attr);
160 handleAttributeError(attr,
"int");
168 if (hasDoubleAttribute(attr)) {
169 return myDoubleAttributes.at(attr);
171 handleAttributeError(attr,
"double");
179 if (hasBoolAttribute(attr)) {
180 return myBoolAttributes.at(attr);
182 handleAttributeError(attr,
"bool");
190 if (hasPositionAttribute(attr)) {
191 return myPositionAttributes.at(attr);
193 handleAttributeError(attr,
"position");
201 if (hasTimeAttribute(attr)) {
202 return myTimeAttributes.at(attr);
204 handleAttributeError(attr,
"time");
213 if (hasTimeAttribute(attr)) {
214 return myTimeAttributes.at(attr);
218 if (hasTimeAttribute(attr)) {
219 return myTimeAttributes.at(attr);
229 if (hasColorAttribute(attr)) {
230 return myColorAttributes.at(attr);
232 handleAttributeError(attr,
"color");
238const std::vector<std::string>&
240 if (hasStringListAttribute(attr)) {
241 return myStringListAttributes.at(attr);
243 handleAttributeError(attr,
"string list");
251 if (hasPositionVectorAttribute(attr)) {
252 return myPositionVectorAttributes.at(attr);
254 handleAttributeError(attr,
"position vector");
268 if (myDefinedVehicleTypeParameter) {
269 return myVehicleTypeParameter;
278 if (myDefinedVehicleParameter) {
279 return myVehicleParameter;
288 if (myDefinedStopParameter) {
289 return myStopParameter;
297const std::map<std::string, std::string>&
303const std::vector<CommonXMLStructure::SumoBaseObject*>&
305 return mySumoBaseObjectChildren;
311 return myStringAttributes.count(attr) > 0;
317 return myIntAttributes.count(attr) > 0;
323 return myDoubleAttributes.count(attr) > 0;
329 return myBoolAttributes.count(attr) > 0;
335 return myPositionAttributes.count(attr) > 0;
341 return myTimeAttributes.count(attr) > 0;
347 return myColorAttributes.count(attr) > 0;
353 return myStringListAttributes.count(attr) > 0;
359 return myPositionVectorAttributes.count(attr) > 0;
365 myStringAttributes[attr] = value;
371 myIntAttributes[attr] = value;
377 myDoubleAttributes[attr] = value;
383 myBoolAttributes[attr] = value;
389 myPositionAttributes[attr] = value;
395 myTimeAttributes[attr] = value;
401 myColorAttributes[attr] = value;
407 myStringListAttributes[attr] = value;
413 myPositionVectorAttributes[attr] = value;
425 myVehicleTypeParameter = *vehicleTypeParameter;
426 myDefinedVehicleTypeParameter =
true;
428 addStringAttribute(
SUMO_ATTR_ID, myVehicleTypeParameter.id);
434 myVehicleParameter = *vehicleParameter;
435 myDefinedVehicleParameter =
true;
437 if (!myVehicleParameter.id.empty()) {
438 addStringAttribute(
SUMO_ATTR_ID, myVehicleParameter.id);
441 if (!vehicleParameter->
routeid.empty()) {
449 myStopParameter = stopParameter;
450 myDefinedStopParameter =
true;
452 if (!myStopParameter.edge.empty()) {
456 if (!myStopParameter.lane.empty()) {
460 if (!myStopParameter.busstop.empty()) {
464 if (!myStopParameter.containerstop.empty()) {
468 if (!myStopParameter.parkingarea.empty()) {
472 if (!myStopParameter.chargingStation.empty()) {
481 if (myDefinedVehicleTypeParameter) {
482 myVehicleTypeParameter.setParameter(key, value);
483 }
else if (myDefinedVehicleParameter) {
484 myVehicleParameter.setParameter(key, value);
485 }
else if (myDefinedStopParameter) {
486 myStopParameter.setParameter(key, value);
488 myParameters[key] = value;
496 mySumoBaseObjectChildren.push_back(sumoBaseObject);
503 auto it = std::find(mySumoBaseObjectChildren.begin(), mySumoBaseObjectChildren.end(), sumoBaseObject);
505 if (it != mySumoBaseObjectChildren.end()) {
506 mySumoBaseObjectChildren.erase(it);
513 WRITE_ERROR(
"Trying to get undefined " + type +
" attribute '" +
toString(attr) +
"' in SUMOBaseObject '" +
toString(myTag) +
"'");
std::string time2string(SUMOTime t)
convert SUMOTime to string
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types.
@ SVC_IGNORING
vehicles ignoring classes
SumoXMLTag
Numbers representing SUMO-XML - element names.
@ SUMO_TAG_NOTHING
invalid tag
@ SUMO_TAG_ROOTFILE
root file
SumoXMLAttr
Numbers representing SUMO-XML - attributes.
@ SUMO_ATTR_CONTAINER_STOP
@ SUMO_ATTR_CHARGING_STATION
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
void addIntAttribute(const SumoXMLAttr attr, const int value)
add int attribute into current SumoBaseObject node
void setVehicleTypeParameter(const SUMOVTypeParameter *vehicleTypeParameter)
set vehicle type parameters
void addSumoBaseObjectChild(SumoBaseObject *sumoBaseObject)
add SumoBaseObject child
const SUMOVehicleParameter::Stop & getStopParameter() const
get stop parameters
const RGBColor & getColorAttribute(const SumoXMLAttr attr) const
get color attribute
SUMOTime getTimeAttribute(const SumoXMLAttr attr) const
get time attribute
const PositionVector & getPositionVectorAttribute(const SumoXMLAttr attr) const
get PositionVector attribute
SumoBaseObject(SumoBaseObject *sumoBaseObjectParent)
constructor
bool hasBoolAttribute(const SumoXMLAttr attr) const
check if current SumoBaseObject has the given bool attribute
void removeSumoBaseObjectChild(SumoBaseObject *sumoBaseObject)
remove SumoBaseObject child
bool hasStringAttribute(const SumoXMLAttr attr) const
has function
std::map< std::string, std::string > getAllAttributes() const
get all attributes in string format
bool hasPositionAttribute(const SumoXMLAttr attr) const
check if current SumoBaseObject has the given bool attribute
void setTag(const SumoXMLTag tag)
set SumoBaseObject tag
SumoBaseObject * getParentSumoBaseObject() const
get pointer to mySumoBaseObjectParent SumoBaseObject (if is null, then is the root)
const Position & getPositionAttribute(const SumoXMLAttr attr) const
get Position attribute
void addPositionVectorAttribute(const SumoXMLAttr attr, const PositionVector &value)
add PositionVector attribute into current SumoBaseObject node
const std::map< std::string, std::string > & getParameters() const
get parameters
SUMOVehicleClass getVClass() const
vehicle class
SumoBaseObject * mySumoBaseObjectParent
pointer to SumoBaseObject parent (If is null, then is the root)
bool hasPositionVectorAttribute(const SumoXMLAttr attr) const
check if current SumoBaseObject has the given positionVector attribute
bool hasTimeAttribute(const SumoXMLAttr attr) const
check if current SumoBaseObject has the given time attribute
void addBoolAttribute(const SumoXMLAttr attr, const bool value)
add bool attribute into current SumoBaseObject node
const SUMOVTypeParameter & getVehicleTypeParameter() const
get current vType
SumoXMLTag getTag() const
void addParameter(const std::string &key, const std::string &value)
add parameter into current SumoBaseObject node
~SumoBaseObject()
destructor
bool hasColorAttribute(const SumoXMLAttr attr) const
check if current SumoBaseObject has the given color attribute
void addTimeAttribute(const SumoXMLAttr attr, const SUMOTime value)
add time attribute into current SumoBaseObject node
void addStringListAttribute(const SumoXMLAttr attr, const std::vector< std::string > &value)
add string list attribute into current SumoBaseObject node
bool hasIntAttribute(const SumoXMLAttr attr) const
check if current SumoBaseObject has the given int attribute
int getIntAttribute(const SumoXMLAttr attr) const
get int attribute
void addDoubleAttribute(const SumoXMLAttr attr, const double value)
add double attribute into current SumoBaseObject node
void handleAttributeError(const SumoXMLAttr attr, const std::string &type) const
handle attribute error
bool hasDoubleAttribute(const SumoXMLAttr attr) const
check if current SumoBaseObject has the given double attribute
void addPositionAttribute(const SumoXMLAttr attr, const Position &value)
add Position attribute into current SumoBaseObject node
bool getBoolAttribute(const SumoXMLAttr attr) const
get bool attribute
void setVClass(SUMOVehicleClass vClass)
set vehicle class
SUMOTime getPeriodAttribute() const
get 'period' attribute
void setVehicleParameter(const SUMOVehicleParameter *vehicleParameter)
set vehicle parameters
void addStringAttribute(const SumoXMLAttr attr, const std::string &value)
void setStopParameter(const SUMOVehicleParameter::Stop &stopParameter)
add stop parameters
double getDoubleAttribute(const SumoXMLAttr attr) const
get double attribute
const SUMOVehicleParameter & getVehicleParameter() const
get vehicle parameters
const std::vector< std::string > & getStringListAttribute(const SumoXMLAttr attr) const
get string list attribute
bool hasStringListAttribute(const SumoXMLAttr attr) const
check if current SumoBaseObject has the given string list attribute
void clear()
clear SumoBaseObject
void addColorAttribute(const SumoXMLAttr attr, const RGBColor &value)
add color attribute into current SumoBaseObject node
const std::string & getStringAttribute(const SumoXMLAttr attr) const
get string attribute
const std::vector< SumoBaseObject * > & getSumoBaseObjectChildren() const
get SumoBaseObject children
CommonXMLStructure::SumoBaseObject * getSumoBaseObjectRoot() const
get SumoBaseObject root
CommonXMLStructure::SumoBaseObject * getCurrentSumoBaseObject() const
get current editedSumoBaseObject
void openSUMOBaseOBject()
open SUMOBaseOBject
CommonXMLStructure::SumoBaseObject * mySumoBaseObjectRoot
SumoBaseObject root.
CommonXMLStructure()
Constructor.
CommonXMLStructure::SumoBaseObject * myCurrentSumoBaseObject
last inserted SumoBaseObject
void closeSUMOBaseOBject()
close myTag
~CommonXMLStructure()
Destructor.
A point in 2D or 3D with translation and scaling methods.
Structure representing possible vehicle parameter.
Definition of vehicle stop (position and duration)
Structure representing possible vehicle parameter.
std::string routeid
The vehicle's route id.