]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/train.cpp
Fix remaining exception class names
[r2c2.git] / source / libr2c2 / train.cpp
index 5f1b46bd950f625fb04581565d7bc849c4a224ad..099e7611c3fbe7c63c1da2a6d432acc8614228a0 100644 (file)
@@ -64,7 +64,7 @@ Train::Train(Layout &l, const VehicleType &t, unsigned a, const string &p):
        overshoot_dist(false)
 {
        if(!loco_type.is_locomotive())
-               throw InvalidParameterValue("Initial vehicle must be a locomotive");
+               throw invalid_argument("Train::Train");
 
        unsigned speed_steps = layout.get_driver().get_protocol_speed_steps(protocol);
        if(speed_steps)
@@ -126,9 +126,9 @@ void Train::add_vehicle(const VehicleType &vt)
 void Train::remove_vehicle(unsigned i)
 {
        if(i>=vehicles.size())
-               throw InvalidParameterValue("Vehicle index out of range");
+               throw out_of_range("Train::remove_vehicle");
        if(i==0)
-               throw InvalidParameterValue("Can't remove the locomotive");
+               throw logic_error("can't remove locomotive");
        delete vehicles[i];
        vehicles.erase(vehicles.begin()+i);
        if(i<vehicles.size())
@@ -143,14 +143,14 @@ unsigned Train::get_n_vehicles() const
 Vehicle &Train::get_vehicle(unsigned i)
 {
        if(i>=vehicles.size())
-               throw InvalidParameterValue("Vehicle index out of range");
+               throw out_of_range("Train::get_vehicle");
        return *vehicles[i];
 }
 
 const Vehicle &Train::get_vehicle(unsigned i) const
 {
        if(i>=vehicles.size())
-               throw InvalidParameterValue("Vehicle index out of range");
+               throw out_of_range("Train::get_vehicle");
        return *vehicles[i];
 }
 
@@ -164,7 +164,7 @@ void Train::set_active(bool a)
        if(a==active)
                return;
        if(!a && controller->get_speed())
-               throw InvalidState("Can't deactivate while moving");
+               throw logic_error("moving");
 
        active = a;
        if(active)
@@ -179,7 +179,7 @@ void Train::set_active(bool a)
 void Train::set_function(unsigned func, bool state)
 {
        if(!loco_type.get_functions().count(func))
-               throw InvalidParameterValue("Invalid function");
+               throw invalid_argument("Train::set_function");
        layout.get_driver().set_loco_function(address, func, state);
 }
 
@@ -321,7 +321,7 @@ bool Train::go_to(const Zone &to)
 bool Train::divert(Track &from)
 {
        if(!from.get_turnout_id())
-               throw InvalidParameterValue("Can't divert from a non-turnout");
+               throw invalid_argument("Train::divert");
        if(routes.empty())
                return false;
 
@@ -395,7 +395,7 @@ bool Train::divert(Track &from)
                if(end!=routes.end())
                        break;
                else if(!diversion->has_track(*track))
-                       throw LogicError("Pathfinder returned a bad route");
+                       throw logic_error("bad diversion");
 
                track = track.next(diversion->get_path(*track));
        }
@@ -423,7 +423,7 @@ const Route *Train::get_route() const
 void Train::place(Block &block, unsigned entry)
 {
        if(controller->get_speed())
-               throw InvalidState("Must be stopped before placing");
+               throw logic_error("moving");
 
        release_blocks();
 
@@ -449,7 +449,7 @@ void Train::place(Block &block, unsigned entry)
 void Train::unplace()
 {
        if(controller->get_speed())
-               throw InvalidState("Must be stopped before unplacing");
+               throw logic_error("moving");
 
        release_blocks();
 
@@ -977,7 +977,7 @@ void Train::reserve_more()
                        Train *other_train = block->get_train();
                        int other_entry = other_train->get_entry_to_block(*block);
                        if(other_entry<0)
-                               throw LogicError("Block reservation inconsistency");
+                               throw logic_error("block reservation inconsistency");
 
                        unsigned exit = block.reverse().entry();
                        unsigned other_exit = BlockIter(block.block(), other_entry).reverse().entry();