Line data Source code
1 : #ifndef MU_IMPORTEXPORT_GPDOMMODEL_H
2 : #define MU_IMPORTEXPORT_GPDOMMODEL_H
3 :
4 : #include <map>
5 : #include <memory>
6 : #include <set>
7 : #include <unordered_map>
8 : #include <unordered_set>
9 :
10 : #include "gpbar.h"
11 : #include "gpbeat.h"
12 : #include "gpvoice.h"
13 : #include "gpmasterbar.h"
14 : #include "gpmastertracks.h"
15 : #include "gpnote.h"
16 : #include "gpscore.h"
17 : #include "gptrack.h"
18 : #include "inoteproperty.h"
19 :
20 : namespace mu::iex::guitarpro {
21 : class GPDomModel
22 : {
23 : public:
24 :
25 221 : GPDomModel() = default;
26 442 : virtual ~GPDomModel() = default;
27 :
28 : GPDomModel(const GPDomModel& gp) = delete;
29 : GPDomModel& operator=(const GPDomModel&) = delete;
30 :
31 221 : void addGPScore(std::unique_ptr<GPScore>&& score) { _score = std::move(score); }
32 :
33 221 : void addGPMasterTracks(std::unique_ptr<GPMasterTracks>&& mTr) { _masterTracks.swap(mTr); }
34 221 : void addGPTracks(std::map<int, std::unique_ptr<GPTrack> >&& tr) { _tracks.swap(tr); }
35 221 : void addGPMasterBars(std::vector<std::unique_ptr<GPMasterBar> >&& mB) { _masterBars.swap(mB); }
36 :
37 221 : const GPScore* score() const { return _score.get(); }
38 221 : const GPMasterTracks* masterTracks() const { return _masterTracks.get(); }
39 472 : const std::map<int, std::unique_ptr<GPTrack> >& tracks() const { return _tracks; }
40 916 : const std::vector<std::unique_ptr<GPMasterBar> >& masterBars() const { return _masterBars; }
41 :
42 : private:
43 :
44 : std::unique_ptr<GPScore> _score;
45 : std::unique_ptr<GPMasterTracks> _masterTracks;
46 : std::map<int, std::unique_ptr<GPTrack> > _tracks;
47 : std::vector<std::unique_ptr<GPMasterBar> > _masterBars;
48 : };
49 : } // namespace mu::iex::guitarpro
50 : #endif // MU_IMPORTEXPORT_GPDOMMODEL_H
|