]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/speedquantizer.cpp
Don't crash if a train has no router
[r2c2.git] / source / libr2c2 / speedquantizer.cpp
index 1098d437c38e76caf7ecb6f1afdd335ae5aaf2e5..f2b14b8a2aa8d6f6d585562739f8c111d548d787 100644 (file)
@@ -10,18 +10,20 @@ SpeedQuantizer::SpeedQuantizer(unsigned n):
        weight_limit(10)
 {
        if(n<1)
-               throw InvalidParameterValue("Must have at leats one speed step");
+               throw invalid_argument("SpeedQuantizer::SpeedQuantizer");
 }
 
 void SpeedQuantizer::learn(unsigned i, float s, float w)
 {
        if(i>=steps.size())
-               throw InvalidParameterValue("Speed step index out of range");
+               throw out_of_range("SpeedQuantizer::learn");
        steps[i].add(s, w);
 }
 
 float SpeedQuantizer::get_speed(unsigned i) const
 {
+       if(i>=steps.size())
+               throw out_of_range("SpeedQuantizer::get_speed");
        if(i==0)
                return 0;
        if(steps[i].weight>=weight_limit)
@@ -82,7 +84,7 @@ unsigned SpeedQuantizer::find_speed_step(float speed) const
                        else
                                return 0;
                }
-               return min(min(static_cast<unsigned>(low*speed/steps[low].speed), steps.size()-1), last+limit);
+               return min(min<unsigned>(low*speed/steps[low].speed, steps.size()-1), last+limit);
        }
 
        float f = (speed-steps[low].speed)/(steps[high].speed-steps[low].speed);