Finally all the above functionality needs to be put together. This can be done as follows:
{} typedef double Time ; ... Time globalTime = -1 ; // global definition of a time; see text ... class Link ; // forward declaration class Node { ... }; class Link { ... } ; class Veh { ... } ; class SimWorld { ... void simulate() { // see later ... } } ; ... int main () { // network construction as discussed earlier ... // build the links: for ( SimWorld::Links::iterator ll =simWorld.links.begin(); ll!=simWorld.links.end(); ++ll ) { Link* link = ll->second ; link->build() ; } // insert some vehicles as explained above ... // time iteration: for ( globalTime=simStartTime; globalTime<99999; globalTime++ ) { bool done = false ; simWorld.simulate( done ) ; if ( done ) break ; } return 0; }and finally
/home/nagel/src/book/sim/book/SimWorld::simulate
The above code fragment also contains a provision for visualizer output, to be used in the next chapter.
Note the time is defined globally as globalTime. There are better ways to do this; this is, as always in this text, left to the experts.