+/* $Id$
+
+This file is part of the MSP Märklin suite
+Copyright © 2006-2009 Mikkosoft Productions, Mikko Rasa
+Distributed under the GPL
+*/
+
#ifndef LIBMARKLIN_CATALOGUE_H_
#define LIBMARKLIN_CATALOGUE_H_
#include <map>
-#include <msp/parser/loader.h>
+#include <msp/datafile/loader.h>
namespace Marklin {
-class Track;
+class LocoType;
+class TrackType;
class Catalogue
{
public:
- class Loader: public Msp::Parser::Loader
+ class Loader: public Msp::DataFile::BasicLoader<Catalogue>
{
public:
Loader(Catalogue &);
private:
- Catalogue &cat;
-
+ void locomotive(unsigned);
void track(unsigned);
};
- typedef std::map<unsigned, Track *> TrackMap;
- Track *get_track(unsigned);
- const TrackMap &get_tracks() const { return tracks; }
- void load(const std::string &);
- ~Catalogue();
private:
- TrackMap tracks;
+ std::map<unsigned, TrackType *> tracks;
+ std::map<unsigned, LocoType *> locos;
+
+public:
+ ~Catalogue();
+
+ TrackType &get_track(unsigned) const;
+ const std::map<unsigned, TrackType *> &get_tracks() const { return tracks; }
+ LocoType &get_locomotive(unsigned) const;
+ const std::map<unsigned, LocoType *> &get_locomotives() const { return locos; }
};
} // namespace Marklin