+ for(map<unsigned, LocoType *>::iterator i=locos.begin(); i!=locos.end(); ++i)
+ delete i->second;
+}
+
+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);
+}
+
+void Catalogue::add_locomotive(LocoType &loco)
+{
+ if(locos.count(loco.get_article_number()))
+ throw Exception("Duplicate track type");
+
+ locos[loco.get_article_number()] = &loco;
+ signal_loco_added.emit(loco);