]> git.tdb.fi Git - r2c2.git/blob - source/libmarklin/catalogue.h
Major code refactoring:
[r2c2.git] / source / libmarklin / catalogue.h
1 #ifndef LIBMARKLIN_CATALOGUE_H_
2 #define LIBMARKLIN_CATALOGUE_H_
3
4 #include <map>
5 #include <msp/datafile/loader.h>
6
7 namespace Marklin {
8
9 class TrackType;
10
11 class Catalogue
12 {
13 public:
14         class Loader: public Msp::DataFile::Loader
15         {
16         public:
17                 Loader(Catalogue &);
18         private:
19                 Catalogue &cat;
20
21                 void track(unsigned);
22         };
23 private:
24         std::map<unsigned, TrackType *> tracks;
25
26 public:
27         ~Catalogue();
28
29         TrackType &get_track(unsigned);
30         const std::map<unsigned, TrackType *> &get_tracks() const { return tracks; }
31         void  load(const std::string &);
32 };
33
34 } // namespace Marklin
35
36 #endif