Eclipse SUMO - Simulation of Urban MObility
Todo List
Global AGFrame::checkOptions ()
Not implemented yet
Class Command_SaveTLCoupledDet
Problem: The detector may not save the last state (on simulation end)
Class Command_SaveTLCoupledLaneDet
Problem: The detector may not save the last state (on simulation end)
Class Command_SaveTLSProgram
Revalidate this - as tls are not seting the link information directly ater being switched, the computed information may be delayed
Global Command_SaveTLSProgram::execute (SUMOTime currentTime)
Here, a discrete even (on switch / program change) would be appropriate
Class Command_SaveTLSSwitches
Revalidate this - as tls are not seting the link information directly ater being switched, the computed information may be delayed
Class Command_SaveTLSSwitchStates
Revalidate this - as tls are not seting the link information directly ater being switched, the computed information may be delayed
Global Command_SaveTLSSwitchStates::execute (SUMOTime currentTime)
Here, a discrete even (on switch / program change) would be appropriate
Global DataHandler::myEndElement (int element)
Refactor/describe
Global DataHandler::myStartElement (int element, const SUMOSAXAttributes &attrs)
Refactor/describe
Global GeneralHandler::myEndElement (int element)
Refactor/describe
Global GeneralHandler::myStartElement (int element, const SUMOSAXAttributes &attrs)
Refactor/describe
Global GenericHandler::characters (const XMLCh *const chars, const XERCES3_SIZE_t length)

recheck/describe what happens with characters when a new element is opened

describe characters processing in the class' head

Global GenericHandler::convert (const std::string &name) const
recheck encoding
Global GenericHandler::endElement (const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname)

recheck/describe encoding of the string-representation

do not generate and report the string-representation

Global GenericHandler::GenericHandler (const std::string &file, const std::string &expectedRoot="")
Why are both lists non-const and given as pointers?
Global GenericHandler::setFileName (const std::string &name)
Hmmm - this is as unsafe as having a direct access to the variable; recheck
Global GenericHandler::startElement (const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname, const XERCES_CPP_NAMESPACE::Attributes &attrs)

recheck/describe encoding of the string-representation

do not generate and report the string-representation

Global GenericSAXHandler::characters (const XMLCh *const chars, const XERCES3_SIZE_t length)

recheck/describe what happens with characters when a new element is opened

describe characters processing in the class' head

Global GenericSAXHandler::convert (const std::string &name) const
recheck encoding
Global GenericSAXHandler::endElement (const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname)

recheck/describe encoding of the string-representation

do not generate and report the string-representation

Global GenericSAXHandler::GenericSAXHandler (StringBijection< int >::Entry *tags, int terminatorTag, StringBijection< int >::Entry *attrs, int terminatorAttr, const std::string &file, const std::string &expectedRoot="")
Why are both lists non-const and given as pointers?
Global GenericSAXHandler::setFileName (const std::string &name)
Hmmm - this is as unsafe as having a direct access to the variable; recheck
Global GenericSAXHandler::startElement (const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname, const XERCES_CPP_NAMESPACE::Attributes &attrs)

recheck/describe encoding of the string-representation

do not generate and report the string-representation

Global GeoConvHelper::addProjectionOptions (OptionsCont &oc)
let the container be retrieved
Global gSelected
Check whether this should be replaced by a Singleton
Class GUIDialog_Breakpoints
Use a LineReader instead of >> while reading
Global GUIDialog_GLChosenEditor::onCmdLoad (FXObject *, FXSelector, void *)
Recheck loading/saving of selections
Global GUIDialog_GLChosenEditor::onCmdSave (FXObject *, FXSelector, void *)
Recheck loading/saving of selections
Class GUIDialog_ViewSettings
Check whether saving/loading settings should be done via XML
Global GUIMEVehicleControl::insertVehicleIDs (std::vector< GUIGlID > &into)
Well, what about concurrent modifications?
Global GUIParameterTableItem< T >::GUIParameterTableItem (FXTable *table, unsigned pos, const std::string &name, bool dynamic, T value)

Consider using a reference to the table

Check whether the name should be stored in GUIParameterTableItemInterface

Should never be dynamic!?

Global GUIParameterTableItem< T >::GUIParameterTableItem (FXTable *table, unsigned pos, const std::string &name, bool dynamic, ValueSource< T > *src)

Consider using a reference to the table

Check whether the name should be stored in GUIParameterTableItemInterface

Global GUIParameterTableWindow::mkItem (const char *name, bool dynamic, double value)
the dynamic-parameter is obsolete
Global GUIParameterTableWindow::mkItem (const char *name, bool dynamic, long long int value)
the dynamic-parameter is obsolete
Global GUIParameterTableWindow::mkItem (const char *name, bool dynamic, int value)
the dynamic-parameter is obsolete
Global GUIParameterTableWindow::mkItem (const char *name, bool dynamic, unsigned value)
the dynamic-parameter is obsolete
Global GUIParameterTableWindow::mkItem (const char *name, bool dynamic, std::string value)
the dynamic-parameter is obsolete(?)
Global GUIParameterTableWindow::onTableDeselected (FXObject *, FXSelector, void *)
Recheck whether this is needed (to override FXTable-behaviour?)
Global GUIParameterTableWindow::onTableSelected (FXObject *, FXSelector, void *)
Recheck whether this is needed (to override FXTable-behaviour?)
Global GUISettingsHandler::setSnapshots (GUISUMOAbstractView *view) const
Please describe why the snapshots are only set if no other existed before (see code)
Global GUISUMOViewParent::init (FXGLCanvas *share, GUINet &net, ViewType type)
Check whether this could be done in the constructor
Global GUITransportableControl::insertIDs (std::vector< GUIGlID > &into)
Well, what about concurrent modifications?
Class GUIVehicleControl

This is partially unsecure due to concurrent access...

Recheck vehicle deletion

Global GUIVehicleControl::insertVehicleIDs (std::vector< GUIGlID > &into, bool listParking, bool listTeleporting)
Well, what about concurrent modifications?
Global libsumo::Helper::fuseLaneCoverage (std::shared_ptr< LaneCoverageInfo > aggregatedLaneCoverage, const std::shared_ptr< LaneCoverageInfo > newLaneCoverage)
Disjunct ranges are not handled (LaneCoverageInfo definition would need to allow several intervals per lane) but the intermediate range is simply assimilated.
Class LineReader

No checks are done so far during reading/setting position etc.

Should not IOError be thrown if something fails?

Global LinkState
fix redundancy
Global MELoop::nextSegment (MESegment *s, MEVehicle *v)
Recheck the "quick and dirty" stuff (
Global MESegment::loadState (const std::vector< std::string > &vehIDs, MSVehicleControl &vc, const SUMOTime blockTime, const int queIdx)

What about throwing an IOError?

What about throwing an error if something else fails (a vehicle can not be referenced)?

Global MESegment::receive (MEVehicle *veh, const int qIdx, SUMOTime time, const bool isDepart=false, const bool isTeleport=false, const bool newEdge=false)
Isn't always time == veh->getEventTime?
Global MESegment::saveState (OutputDevice &out) const
What about throwing an IOError?
Global MESegment::send (MEVehicle *veh, MESegment *const next, const int nextQIdx, SUMOTime time, const MSMoveReminder::Notification reason)
Isn't always time == veh->getEventTime?
Class MEVehicleControl

This is partially unsecure due to concurrent access...

Recheck vehicle deletion

Class MSAmitranTrajectories
consider error-handling on write (using IOError)
Global MSBaseVehicle::getStopArrivalDelay () const
implement for meso
Global MSBaseVehicle::getStopDelay () const
implement for meso
Class MSBatteryExport
consider error-handling on write (using IOError)
Global MSCFModel::interactionGap (const MSVehicle *const veh, double vL) const
evaluate signature
Global MSCFModel::stopSpeed (const MSVehicle *const veh, const double speed, double gap, const CalcReason usage=CalcReason::CURRENT) const
generic Interface, models can call for the values they need
Global MSCFModel::stopSpeed (const MSVehicle *const veh, const double speed, double gap, double decel, const CalcReason usage=CalcReason::CURRENT) const =0
generic Interface, models can call for the values they need
Global MSCFModel_ACC::interactionGap (const MSVehicle *const, double vL) const

evaluate signature

update interactionGap logic

Global MSCFModel_ACC::MSCFModel_ACC (const MSVehicleType *vtype)
: add attributes for myCollisionAvoidanceGainSpeed and myCollisionAvoidanceGainSpace
Global MSCFModel_ACC::stopSpeed (const MSVehicle *const veh, const double speed, double gap2pred, double decel, const CalcReason usage=CalcReason::CURRENT) const
generic Interface, models can call for the values they need
Global MSCFModel_CACC::interactionGap (const MSVehicle *const, double vL) const

evaluate signature

update interactionGap logic

Global MSCFModel_CACC::stopSpeed (const MSVehicle *const veh, const double speed, double gap2pred, double decel, const CalcReason usage=CalcReason::CURRENT) const
generic Interface, models can call for the values they need
Global MSCFModel_CC::interactionGap (const MSVehicle *const, double vL) const
evaluate signature
Global MSCFModel_CC::stopSpeed (const MSVehicle *const veh, const double speed, double gap2pred, double decel, const CalcReason usage=CalcReason::CURRENT) const
generic Interface, models can call for the values they need
Global MSCFModel_Daniel1::stopSpeed (const MSVehicle *const veh, const double speed, double gap2pred, double decel, const CalcReason usage=CalcReason::CURRENT) const
generic Interface, models can call for the values they need
Global MSCFModel_EIDM::interactionGap (const MSVehicle *const, double vL) const

evaluate signature

update interactionGap logic to IDM

Global MSCFModel_EIDM::stopSpeed (const MSVehicle *const veh, const double speed, double gap, double decel, const CalcReason usage=CalcReason::CURRENT) const
generic Interface, models can call for the values they need
Global MSCFModel_IDM::interactionGap (const MSVehicle *const, double vL) const

evaluate signature

update interactionGap logic to IDM

Global MSCFModel_IDM::stopSpeed (const MSVehicle *const veh, const double speed, double gap, double decel, const CalcReason usage=CalcReason::CURRENT) const
generic Interface, models can call for the values they need
Global MSCFModel_Kerner::stopSpeed (const MSVehicle *const veh, const double speed, double gap2pred, double decel, const CalcReason usage=CalcReason::CURRENT) const
generic Interface, models can call for the values they need
Global MSCFModel_Krauss::stopSpeed (const MSVehicle *const veh, const double speed, double gap2pred, double decel, const CalcReason usage=CalcReason::CURRENT) const
generic Interface, models can call for the values they need
Global MSCFModel_KraussOrig1::stopSpeed (const MSVehicle *const veh, const double speed, double gap2pred, double decel, const CalcReason usage=CalcReason::CURRENT) const
generic Interface, models can call for the values they need
Global MSCFModel_PWag2009::stopSpeed (const MSVehicle *const veh, const double speed, double gap2pred, double decel, const CalcReason usage=CalcReason::CURRENT) const
generic Interface, models can call for the values they need
Global MSCFModel_SmartSK::stopSpeed (const MSVehicle *const veh, const double speed, double gap2pred, double decel, const CalcReason usage=CalcReason::CURRENT) const
generic Interface, models can call for the values they need
Global MSCFModel_W99::interactionGap (const MSVehicle *const, double vL) const
evaluate signature
Global MSCFModel_W99::stopSpeed (const MSVehicle *const veh, const double speed, double gap, double decel, const CalcReason usage=CalcReason::CURRENT) const
generic Interface, models can call for the values they need
Global MSCFModel_Wiedemann::interactionGap (const MSVehicle *const, double vL) const
evaluate signature
Global MSCFModel_Wiedemann::stopSpeed (const MSVehicle *const veh, const double speed, double gap, double decel, const CalcReason usage=CalcReason::CURRENT) const
generic Interface, models can call for the values they need
Class MSDelayBasedTrafficLightLogic
Validate against the original algorithm's details.
Global MSDetectorFileOutput::reset ()
Reckeck/refactor
Class MSDevice_DriverState

: Provide logging facilities

: allow manual and automated type to refer to vTypeDistributions

Global MSDevice_ElecHybrid::notifyMove (SUMOTrafficObject &tObject, double oldPos, double newPos, double newSpeed)

modify equation for deceleration, getNoEnergyDecel

doublecheck this mode, we probably assume here that the acceleration is negative

check the value of myConsum here, it should be probably zero

Global MSDevice_SSM::computeGlobalMeasures ()
Manage as episodes (BR -> braking episode, SGAP/TGAP -> car-following episode) with invariant leader, and filtering applying the corresponding thresholds.
Global MSDevice_SSM::flushGlobalMeasures ()
Adapt accordingly if episode structure is implemented,
Global MSEdge::closeBuilding ()
Has to be called after all edges were built and all connections were set...; Still, is not very nice
Global MSEdge::getInternalFollowingEdge (const MSEdge *followerAfterInternal, SUMOVehicleClass vClass) const
extension: inner junctions are not filled
Global MSEdge::leftLane (const MSLane *const lane) const
This method searches for the given in the container; probably, this could be done faster
Global MSEdge::parallelLane (const MSLane *const lane, int offset, bool includeOpposite=true) const
This method searches for the given in the container; probably, this could be done faster
Global MSEdge::rightLane (const MSLane *const lane) const
This method searches for the given in the container; probably, this could be done faster
Global MSEdgeControl::executeMovements (SUMOTime t)
: sorting only needed to account for lane-ordering dependencies.
Global MSEdgeControl::getEdges () const
Check: Is this secure?
Global MSEdgeControl::gotActive (MSLane *l)
Check for l==0?
Global MSEdgeControl::MSEdgeControl (const std::vector< MSEdge * > &edges)
Assure both containers are not 0
Class MSElecHybridExport
consider error-handling on write (using IOError)
Class MSEmissionExport
consider error-handling on write (using IOError)
Class MSFCDExport
consider error-handling on write (using IOError)
Global MSFrame::checkOptions ()

Rechek usage of the lane change model

probably, more things should be checked...

Class MSFullExport
consider error-handling on write (using IOError)
Global MSInductLoop::getEnteredNumber (const int offset) const
recheck (especially if more than one vehicle has passed)
Global MSInductLoop::getOccupancy () const
recheck (especially if more than one vehicle has passed)
Global MSInductLoop::getVehicleIDs (const int offset) const
recheck (especially if more than one vehicle has passed)
Class MSInsertionControl
When a vehicle is deleted due to waiting too long or because of vaporizing, this is not reported anywhere
Global MSInsertionControl::checkCandidates (SUMOTime time, const bool preCheck)
recheck
Global MSLane::dictionary (const std::string &id, MSLane *lane)

make non-static

why is the id given? The lane is named

Global MSLane::getLeaderOnConsecutive (double dist, double seen, double speed, const MSVehicle &veh, const std::vector< MSLane * > &bestLaneConts) const
: There are some oddities:
  • what about crossing a link at red, or if a link is closed? Has a following vehicle to be regarded or not?
Global MSLane::getSpaceTillLastStanding (const MSVehicle *ego, bool &foundStopped) const
if ego isn't on this lane, we could use a cached value
Global MSLane::loadState (const std::vector< std::string > &vehIDs, MSVehicleControl &vc)

What about throwing an IOError?

What about throwing an error if something else fails (a vehicle can not be referenced)?

Global MSLane::saveState (OutputDevice &out)
What about throwing an IOError?
Global MSLink::ApproachingVehicleInformation::willPass
: check semantics)
Global MSLink::getLeaderInfo (const MSVehicle *ego, double dist, std::vector< const MSPerson * > *collectBlockers=0, bool isShadowLink=false) const
consider lateral position (depending on whether the crossing is encountered on the way in or out)
Global MSLink::setRequestInformation (int index, bool hasFoes, bool isCont, const std::vector< MSLink * > &foeLinks, const std::vector< MSLane * > &foeLanes, MSLane *internalLaneBefore=0)
Unsecure!
Class MSMeanData
consider error-handling on write (using IOError)
Class MSMeanData_Amitran
consider error-handling on write (using IOError)
Class MSMeanData_Emissions
consider error-handling on write (using IOError)
Class MSMeanData_Harmonoise
consider error-handling on write (using IOError)
Class MSMeanData_Net
consider error-handling on write (using IOError)
Global MSMeanData_Net::MSLaneMeanDataValues::getAttributeValue (SumoXMLAttr a, const SUMOTime period, const double numLanes, const double speedLimit) const
: remove redundancy in derived values (density, laneDensity)
Global MSNet::clearAll ()
Try to move all this to the destructor
Global MSNet::closeBuilding (const OptionsCont &oc, MSEdgeControl *edges, MSJunctionControl *junctions, SUMORouteLoaderControl *routeLoaders, MSTLLogicControl *tlc, std::vector< SUMOTime > stateDumpTimes, std::vector< std::string > stateDumpFiles, bool hasInternalLinks, bool junctionHigherSpeeds, const MMVersion &version)
Try to move all this to the constructor?
Global MSNet::simulate (SUMOTime start, SUMOTime stop)

Recheck return value

What exceptions may occure?

Global MSNet::simulationStep (const bool onlyMove=false)
Which exceptions may occur?
Global MSNet::writeOutput ()
Which exceptions may occur?
Class MSQueueExport
consider error-handling on write (using IOError)
Global MSRouteProbe::writeXMLDetectorProlog (OutputDevice &dev) const override
What happens with the additional information if several detectors use the same output?
Global MSRoutingEngine::adaptEdgeEfforts (SUMOTime currentTime)
Describe how the weights are adapted
Global MSSimpleDriverState::myAssumedGap
: update each step to incorporate the assumed change given a specific speed difference
Global MSSimpleTrafficLightLogic::getPhases ()
Recheck!
Global MSStop::overheadWireSegment
Check that this should really be a stopping place instance
Class MSStopOut
consider error-handling on write (using IOError)
Global MSTransportable::getRoutingMode () const
: allow configuring routing mode
Class MSVehicle::DriveProcessItem
: improve documentation
Global MSVehicle::myAngle
consider moving this into myState)
Global MSVehicle::myNextTurn
calculate during plan move
Global MSVehicle::planMoveInternal (const SUMOTime t, MSLeaderInfo ahead, DriveItemVector &lfLinks, double &myStopDist, std::pair< double, const MSLink * > &myNextTurn) const
: documentation
Global MSVehicle::processNextStop (double currentVelocity)
Describe more detailed
Global MSVehicleControl::deleteVehicle (SUMOVehicle *v, bool discard=false)
Isn't this quite insecure?
Class MSVTKExport
Class MSXMLRawOut
consider error-handling on write (using IOError)
Global MSXMLRawOut::writeEdge (OutputDevice &of, const MSEdge &edge, SUMOTime timestep)
MSGlobals::gOmitEmptyEdgesOnDump should not be used; rather the according option read in write
Class NamedColumnsParser
What happens if an uninitialised NamedColumnsParser is used? exceptions?
Class NBDistrict
Recheck whether this can be somehow joined with ODDistrict
Global NBDistrict::addSink (NBEdge *const sink, double weight)
Consider using only one list for sinks/weights
Global NBDistrict::addSource (NBEdge *const source, double weight)
Consider using only one list for sources/weights
Global NBDistrict::getPosition () const
Recheck when this information is set/needed
Global NBDistrict::setCenter (const Position &pos)
Recheck when this information is set/needed
Global NBEdge::addLane2LaneConnection (int fromLane, NBEdge *dest, int toLane, Lane2LaneInfoType type, bool mayUseSameDestination=false, bool mayDefinitelyPass=false, KeepClear keepClear=KEEPCLEAR_UNSPECIFIED, double contPos=UNSPECIFIED_CONTPOS, double visibility=UNSPECIFIED_VISIBILITY_DISTANCE, double speed=UNSPECIFIED_SPEED, double friction=UNSPECIFIED_FRICTION, double length=myDefaultConnectionLength, const PositionVector &customShape=PositionVector::EMPTY, const bool uncontrolled=UNSPECIFIED_CONNECTION_UNCONTROLLED, SVCPermissions permissions=SVC_UNSPECIFIED, const bool indirectLeft=false, const std::string &edgeType="", SVCPermissions changeLeft=SVC_UNSPECIFIED, SVCPermissions changeRight=SVC_UNSPECIFIED, bool postProcess=false)
Check difference between "setConnection" and "addLane2LaneConnection"
Global NBEdge::getInternalLaneWidth (const NBNode &node, const NBEdge::Connection &connection, const NBEdge::Lane &successor, bool isVia) const
validity checks
Global NBEdge::getJunctionPriority (const NBNode *const node) const
Maybe the edge priority whould be stored in the node
Global NBEdge::getLoadedLength () const
consolidate use of myLength and myLoaded length
Global NBEdge::getStep () const
Recheck usage!
Global NBEdge::remapConnections (const EdgeVector &incoming)
recheck!
Global NBEdge::setConnection (int lane, NBEdge *destEdge, int destLane, Lane2LaneInfoType type, bool mayUseSameDestination=false, bool mayDefinitelyPass=false, KeepClear keepClear=KEEPCLEAR_UNSPECIFIED, double contPos=UNSPECIFIED_CONTPOS, double visibility=UNSPECIFIED_VISIBILITY_DISTANCE, double speed=UNSPECIFIED_SPEED, double friction=UNSPECIFIED_FRICTION, double length=myDefaultConnectionLength, const PositionVector &customShape=PositionVector::EMPTY, const bool uncontrolled=UNSPECIFIED_CONNECTION_UNCONTROLLED, SVCPermissions permissions=SVC_UNSPECIFIED, bool indirectLeft=false, const std::string &edgeType="", SVCPermissions changeLeft=SVC_UNSPECIFIED, SVCPermissions changeRight=SVC_UNSPECIFIED, bool postProcess=false)
Check difference between "setConnection" and "addLane2LaneConnection"
Global NBEdge::setGeometry (const PositionVector &g, bool inner=false)
Recheck usage, disallow access
Global NBEdge::setJunctionPriority (const NBNode *const node, int prio)
Maybe the edge priority whould be stored in the node
Global NBEdgeCont::applyOptions (OptionsCont &oc)
Recheck exceptions
Global NBEdgeCont::computeEdge2Edges (bool noLeftMovers)
Recheck whether a visitor-pattern should be used herefor
Global NBEdgeCont::computeEdgeShapes (double smoothElevationThreshold=-1)

Recheck whether a visitor-pattern should be used herefor

Recheck usage

Global NBEdgeCont::computeLanes2Edges ()
Recheck whether a visitor-pattern should be used herefor
Global NBEdgeCont::computeLaneShapes ()

Recheck whether a visitor-pattern should be used herefor

Recheck usage

Global NBEdgeCont::erase (NBDistrictCont &dc, NBEdge *edge)
Recheck whether the district cont is needed - if districts are processed using an external tool
Global NBEdgeCont::extract (NBDistrictCont &dc, NBEdge *edge, bool remember=false)

Recheck whether the district cont is needed - if districts are processed using an external tool

Recheck whether this is used at all and why

Global NBEdgeCont::getAllNames () const
Recheck usage, probably, filling a given vector would be better...
Global NBEdgeCont::getGeneratedFrom (const std::string &id) const
Recheck usage
Global NBEdgeCont::joinSameNodeConnectingEdges (NBDistrictCont &dc, NBTrafficLightLogicCont &tlc, EdgeVector edges)
Recheck and describe usage
Global NBEdgeCont::recheckLanes ()
Recheck whether a visitor-pattern should be used herefor
Global NBEdgeCont::recheckLaneSpread ()
Recheck usage; check whether this is really needed and whether it works at all
Global NBEdgeCont::removeUnwishedEdges (NBDistrictCont &dc)
Recheck usage; check whether keep-edges.postload is really useful
Global NBEdgeCont::retrievePossiblySplit (const std::string &id, bool downstream) const
Recheck usage
Global NBEdgeCont::retrievePossiblySplit (const std::string &id, const std::string &hint, bool incoming) const
Recheck usage
Global NBEdgeCont::retrievePossiblySplit (const std::string &id, double pos) const
Recheck usage
Global NBEdgeCont::sortOutgoingLanesConnections ()
Recheck whether a visitor-pattern should be used herefor
Global NBFrame::fillOptions (OptionsCont &oc, bool forNetgen)
not working for netgen
Global NBNodeCont::guessTLs (OptionsCont &oc, NBTrafficLightLogicCont &tlc)
Recheck exception handling
Global NBNodeCont::joinTLS (NBTrafficLightLogicCont &tlc, double maxdist)
Recheck exception handling
Global NBNodeCont::setAsTLControlled (NBNode *node, NBTrafficLightLogicCont &tlc, TrafficLightType type, std::string id="")
Recheck exception handling
Global NBOwnTLDef::computeUnblockedWeightedStreamNumber (const NBEdge *const e1, const NBEdge *const e2)
There are several magic numbers; describe
Global NBOwnTLDef::getDirectionalWeight (LinkDirection dir)
There are several magic numbers; describe
Global NBSign::writeAsPOI (OutputDevice &into, const NBEdge *edge) const
add default colors
Global NBTrafficLightLogicCont::applyOptions (OptionsCont &oc)
Recheck exceptions
Global NBTrafficLightLogicCont::remapRemoved (NBEdge *removed, const EdgeVector &incoming, const EdgeVector &outgoing)
Recheck usage
Global NBTrafficLightLogicCont::replaceRemoved (NBEdge *removed, int removedLane, NBEdge *by, int byLane, bool incoming)
Recheck usage
Global NBTypeCont::getEdgeTypeIsOneWay (const std::string &edgeType) const
There is no default for one-way!?
Module netbuild

Removing unwished edges: Recheck whether this can be done during loading - whether this option/step is really needed.

Finding isolated roads: Describe

Global NGNet::createSpiderWeb (int numRadDiv, int numCircles, double spaceRad, bool hasCenter, double attachLength)
consolidate the name of the center node
Global NGNet::toNB () const
Check whether throwing an exception is really necessary, here
Global NGNode::buildNBNode (NBNetBuilder &nb, const Position &perturb) const

There is no interaction with explicit node setting options? Where is this done?

Check whether throwing an exception is really necessary, here

Class NGRandomNetBuilder
Describe the algorithm
Global NGRandomNetBuilder::createNet (int numNodes, bool gridMode)
Describe the algorithm
Global NGRandomNetBuilder::createNewNode (NGNode *baseNode, bool gridMode)
Describe better
Global NGRandomNetBuilder::findPossibleOuterNodes (NGNode *node)
Describe better
Global NGRandomNetBuilder::NGRandomNetBuilder (NGNet &net, double minAngle, double minDistance, double maxDistance, double connectivity, int numTries, const RandomDistributor< int > &neighborDist)
check meanings of connectivity/numTries
Global NIFrame::checkOptions (OptionsCont &oc)
Unused currently; repair/fill
Class NIImporter_ArcView
reinsert import via shapelib
Global NIImporter_OpenDrive::loadNetwork (const OptionsCont &oc, NBNetBuilder &nb)

: One could think of determining whether lane sections may be joined when being equal in SUMO's sense Their naming would have to be updated, too, also in TraCI

: probably, the lane offsets to the center are not right

Global NIImporter_OpenDrive::OPENDRIVE_TAG_GEOMETRY

OPENDRIVE_TAG_NEIGHBOR,

OPENDRIVE_TAG_TYPE,

Global NIVissimEdge::buildConnectionClusters ()
Probably the distance (MAX_CLUSTER_DISTANCE=10m) should be made variable
Class NIXMLEdgesHandler

revalidate node retrieval

One day, one should rethink the order of parsing. Now, the handler is able to load edges, using information from the types, first, and extending them by given information. In addition, if the read edge is already known, its values are also used. Then, defining vehicles allowed per lane, and additional edge split definitions add some further complexity. This all works somehow for most of our use cases, but it's definitely not as consistent that everything what seems to be possible would also work appropriately.

Global NIXMLNodesHandler::myStartElement (int element, const SUMOSAXAttributes &attrs)
ProcessErrors are thrown when parsing traffic lights!?
Global NIXMLNodesHandler::NIXMLNodesHandler (NBNodeCont &nc, NBEdgeCont &ec, NBTrafficLightLogicCont &tlc, OptionsCont &options)

Options are only given to determine whether "flip-y" is set; maybe this should be done by giving a bool

Why are options not const?

Class NIXMLPTHandler

revalidate node retrieval

One day, one should rethink the order of parsing. Now, the handler is able to load edges, using information from the types, first, and extending them by given information. In addition, if the read edge is already known, its values are also used. Then, defining vehicles allowed per lane, and additional edge split definitions add some further complexity. This all works somehow for most of our use cases, but it's definitely not as consistent that everything what seems to be possible would also work appropriately.

Global NLBuilder::build ()
Again, both returning a bool and throwing an exception; quite inconsistent
Global NLDetectorBuilder::buildE2Detector (const std::string &id, MSLane *lane, double pos, double endPos, double length, const std::string &device, SUMOTime frequency, SUMOTime haltingTimeThreshold, double haltingSpeedThreshold, double jamDistThreshold, const std::string name, const std::string &vTypes, const std::string &nextEdges, int detectPersons, bool friendlyPos, bool showDetector, MSTLLogicControl::TLSLogicVariants *tlls=0, MSLane *toLane=0)
Add parameter showDetector to indicate whether the detector should be visible in the GUI
Global NLDetectorBuilder::checkSampleInterval (SUMOTime splInterval, SumoXMLTag type, const std::string &id)
Why is splInterval an int???
Class NLEdgeControlBuilder
Assignment of lanes is not really well. Should be reworked after shapes are given as params.
Global NLEdgeControlBuilder::addLane (const std::string &id, double maxSpeed, double friction, double length, const PositionVector &shape, double width, SVCPermissions permissions, SVCPermissions changeLeft, SVCPermissions changeRight, int index, bool isRampAccel, const std::string &type, const PositionVector &outlineShape)
Definitely not a good way
Global NLHandler::addDistrictEdge (const SUMOSAXAttributes &attrs, bool isSource)
No exception?
Global NLHandler::myEndElement (int element)
Refactor/describe
Global NLHandler::myStartElement (int element, const SUMOSAXAttributes &attrs)
Refactor/describe
Class NLJunctionControlBuilder

Refactor this class - it's too large

Resort method by one of the topics.

Global NLJunctionControlBuilder::addLogicItem (int request, const std::string &response, const std::string &foes, bool cont)
Recheck "cont"; is the description correct?
Global NLJunctionControlBuilder::addParam (const std::string &key, const std::string &value)

Where are these parameter used? Describe!

Can a parameter be overwritten?

Global NLJunctionControlBuilder::closeJunction (const std::string &basePath)

Throwing ProcessError would get unneeded if the container would be built by default (see prepare)

The type of the junctions shoould probably be checked when supprted (in openJunction)

Global NLJunctionControlBuilder::initTrafficLightLogic (const std::string &id, const std::string &programID, TrafficLightType type, SUMOTime offset)

Why is the type not verified?

Recheck, describe usage of detectorOffset (where does the information come from?)

Global NLJunctionControlBuilder::openJunction (const std::string &id, const std::string &key, const SumoXMLNodeType type, const Position pos, const PositionVector &shape, const std::vector< MSLane * > &incomingLanes, const std::vector< MSLane * > &internalLanes, const std::string &name)
Check why "key" is given
Global NLNetShapeHandler::myStartElement (int element, const SUMOSAXAttributes &attrs)
Refactor/describe
Global NLTriggerBuilder::buildCalibrator (MSNet &net, const std::string &id, MSEdge *edge, MSLane *lane, double pos, const std::string &file, const std::string &outfile, const SUMOTime freq, const MSRouteProbe *probe, const double invalidJamThreshold, const std::string &vTypes)
Is the position correct/needed
Global NLTriggerBuilder::buildMECalibrator (MSNet &net, const std::string &id, const MSEdge *edge, double pos, const std::string &file, const std::string &outfile, const SUMOTime freq, MSRouteProbe *probe, const double invalidJamThreshold, const std::string &vTypes)
Is the position correct/needed
Global NLTriggerBuilder::getFileName (const SUMOSAXAttributes &attrs, const std::string &base, const bool allowEmpty=false)
Recheck usage of the helper class
Global NLTriggerBuilder::parseAndBuildOverheadWireSection (MSNet &net, const SUMOSAXAttributes &attrs)
for cycle abbreviation?
Global ODDistrictHandler::addSink (const SUMOSAXAttributes &attrs)
Checking whether myCurrentDistrict is valid through getValues is not quite nice
Global ODDistrictHandler::addSource (const SUMOSAXAttributes &attrs)
Checking whether myCurrentDistrict is valid through getValues is not quite nice
Global ODMatrix::applyCurve (const Distribution_Points &ps, ODCell *cell, std::vector< ODCell * > &newCells)
describe better!!!
Global ODMatrix::applyCurve (const Distribution_Points &ps)
Describe
Global ODMatrix::getNextNonCommentLine (LineReader &lr)
Describe
Global ODMatrix::loadMatrix (OptionsCont &oc)
Describe
Global ODMatrix::loadRoutes (OptionsCont &oc, SUMOSAXHandler &handler)
Describe
Global ODMatrix::parseSingleTime (const std::string &time)
Describe
Global ODMatrix::parseTimeLine (const std::vector< std::string > &def, bool timelineDayInHours)
Describe
Global ODMatrix::readFactor (LineReader &lr, double scale)
Describe
Global ODMatrix::readO (LineReader &lr, double scale, std::string vehType, bool matrixHasVehType)
Describe
Global ODMatrix::readTime (LineReader &lr)
Describe
Global ODMatrix::readV (LineReader &lr, double scale, std::string vehType, bool matrixHasVehType)
Describe
Global OptionsCont::getStringVector (const std::string &name) const
Is it possible to retrieve a const-reference of the string?
Global OptionsCont::isInStringVector (const std::string &optionName, const std::string &itemName) const
Try to optimize - at each call, the vector is rebuilt
Global OptionsCont::splitLines (std::ostream &os, std::string what, int offset, int nextOffset)
Describe parameter
Global OptionsLoader::characters (const XMLCh *const chars, const XERCES3_SIZE_t length)
Describe better
Class OUProcess
: check parameter admissibility in setter methods
Global OutputDevice::closeTag (const std::string &comment="")
it is not verified that the topmost element was closed
Global OutputDevice::writeXMLHeader (const std::string &rootElement, const std::string &schemaFile, std::map< SumoXMLAttr, std::string > attrs=std::map< SumoXMLAttr, std::string >(), bool includeConfig=true)
Describe what is saved
Global OutputFormatter::closeTag (std::ostream &into, const std::string &comment="")=0
it is not verified that the topmost element was closed
Global OutputFormatter::writeXMLHeader (std::ostream &into, const std::string &rootElement, const std::map< SumoXMLAttr, std::string > &attrs, bool includeConfig=true)=0

Check which parameter is used herein

Describe what is saved

Class PCLoaderArcView
reinsert import via shapelib
Global PCTypeDefHandler::myStartElement (int element, const SUMOSAXAttributes &attrs)
Completely unsecure currently (invalid values may force abortion with no error message)
Global PHEMCEP::_cepCurveFC
describe
Global PHEMCEP::_normedCepCurveFC
describe
Global PHEMCEP::_powerPatternFC
describe
Global PHEMCEP::_powerPatternPollutants
describe
Global PHEMCEP::_sizeOfPatternPollutants
describe
Global PHEMCEP::GetCdValue () const
: Why is it named "cdValue", here?
Global PlainXMLFormatter::closeTag (std::ostream &into, const std::string &comment="")
it is not verified that the topmost element was closed
Global PlainXMLFormatter::writeXMLHeader (std::ostream &into, const std::string &rootElement, const std::map< SumoXMLAttr, std::string > &attrs, bool includeConfig=true)
Describe what is saved
Global RODFFrame::checkOptions ()
Unused currently; repair/fill
Global RODFRouteCont::removeIllegal (const std::vector< ROEdgeVector > &illegals)
Not used, yet
Global RODUAFrame::checkOptions ()
probably, more things should be checked...
Global ROEdge::addLane (ROLane *lane)
What about vehicle-type aware connections?
Global ROEdge::addSuccessor (ROEdge *s, ROEdge *via=nullptr, std::string dir="")
What about vehicle-type aware connections?
Global ROEdge::getEffort (const ROVehicle *const veh, double time) const
Recheck whether the vehicle's maximum speed is considered
Global ROEdge::getEffortStatic (const ROEdge *const edge, const ROVehicle *const veh, double time)
Recheck whether the vehicle's maximum speed is considered
Global ROFrame::checkOptions (OptionsCont &oc)
probably, more things should be checked...
Global ROJTRFrame::checkOptions ()
probably, more things should be checked...
Global ROLoader::ROLoader (OptionsCont &oc, const bool emptyDestinationsAllowed, const bool logSteps)
Recheck usage of emptyDestinationsAllowed
Global ROMAEdge::addSuccessor (ROEdge *s, ROEdge *via=nullptr, std::string dir="")
What about vehicle-type aware connections?
Global ROMAFrame::checkOptions ()
probably, more things should be checked...
Global RONet::getNode (const std::string &id) const
Check whether a const pointer may be returned
Global RONet::getRouteDef (const std::string &name) const

Check whether a const pointer may be returned

Rename myRoutes to myRouteDefinitions

Global RONetHandler::parseDistrictEdge (const SUMOSAXAttributes &attrs, bool isSource)
No exception?
Global RONetHandler::parseEdge (const SUMOSAXAttributes &attrs)

The edge is "built" first, then the nodes are added; should be done while constructing, probably a legacy issue

No exception?

Global RONetHandler::parseJunction (const SUMOSAXAttributes &attrs)

In fact, the junction should be built given its position.

No exception?

Global RONetHandler::parseLane (const SUMOSAXAttributes &attrs)
No exception?
Global RORoutable::getType () const
Why not return a reference?
Global RORoute::getCosts () const
Recheck why the costs are stored in a route
Global RORoute::getProbability () const
Recheck why the probability is stored in a route
Global RORoute::RORoute (const std::string &id, double costs, double prob, const ConstROEdgeVector &route, const RGBColor *const color, const std::vector< SUMOVehicleParameter::Stop > &stops)
Are costs/prob really mandatory?
Global RORoute::setCosts (double costs)
Recheck why the costs are stored in a route
Global RORoute::setProbability (double prob)
Recheck why the probability is stored in a route
Global ROVehicle::getRouteDefinition () const
Why not return a reference?
Global ROVehicleByDepartureComperator::operator() (ROVehicle *veh1, ROVehicle *veh2) const
Check whether both vehicles can be const
Global ShapeHandler::myEndElement (int element)
Refactor/describe
Global ShapeHandler::myStartElement (int element, const SUMOSAXAttributes &attrs)
Refactor/describe
Global SUMOVehicleParserHelper::parseGuiShape (const SUMOSAXAttributes &attrs, const std::string &id)
Recheck how errors are handled and what happens if they occure
Global SUMOVehicleParserHelper::parseVehicleClass (const SUMOSAXAttributes &attrs, const std::string &id)
Recheck how errors are handled and what happens if they occure
Global SystemFrame::addConfigurationOptions (OptionsCont &oc)
let the container be retrieved
Global SystemFrame::addReportOptions (OptionsCont &oc)
let the container be retrieved