- for(TrackMap::iterator i=tracks.begin(); i!=tracks.end(); ++i)
- delete i->second;
- for(VehicleMap::iterator i=vehicles.begin(); i!=vehicles.end(); ++i)
- delete i->second;
-}
-
-float Catalogue::get_rail_elevation() const
-{
- return ballast_profile.get_height()+rail_profile.get_height();
-}
-
-void Catalogue::add_track(TrackType &track)
-{
- if(tracks.count(track.get_article_number()))
- throw Exception("Duplicate track type");
-
- tracks[track.get_article_number()] = &track;
- signal_track_added.emit(track);
-}
-
-const TrackType &Catalogue::get_track(const ArticleNumber &art_nr) const
-{
- TrackMap::const_iterator i=tracks.find(art_nr);
- if(i==tracks.end())
- throw KeyError("Unknown track type");
-
- return *i->second;
-}
-
-void Catalogue::add_vehicle(VehicleType &veh)
-{
- if(vehicles.count(veh.get_article_number()))
- throw Exception("Duplicate vehicle type");
-
- vehicles[veh.get_article_number()] = &veh;
- signal_vehicle_added.emit(veh);
-}
-
-const VehicleType &Catalogue::get_vehicle(const ArticleNumber &art_nr) const
-{
- VehicleMap::const_iterator i = vehicles.find(art_nr);
- if(i==vehicles.end())
- throw KeyError("Unknown vehicle type");
-
- return *i->second;
+ add_type<TrackType>();
+ add_type<SignalType>();
+ add_type<VehicleType>();
+ add_type<TerrainType>();
+ add_type<TrackAppearance>().keyword("track_appearance");