diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2012-03-20 18:01:59 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2012-03-20 18:01:59 +0000 |
commit | 8f4e126c72f2f47487b2b9addf4914a7f7109440 (patch) | |
tree | f5a18b8b423ad2c6c2fb647ed2f4372ae0e61afa /libs/midi++2/midi++ | |
parent | 71b3c8cfe12fad319af00ba03f7746761a90b568 (diff) |
a lot of tweaking and fixing for the MIDNAM parsing code so that it correctly handles all 44 sample files from digicake.com/midnams.
git-svn-id: svn://localhost/ardour2/branches/3.0@11734 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/midi++2/midi++')
-rw-r--r-- | libs/midi++2/midi++/midnam_patch.h | 52 |
1 files changed, 28 insertions, 24 deletions
diff --git a/libs/midi++2/midi++/midnam_patch.h b/libs/midi++2/midi++/midnam_patch.h index 316ac8fdb9..505245ae84 100644 --- a/libs/midi++2/midi++/midnam_patch.h +++ b/libs/midi++2/midi++/midnam_patch.h @@ -26,7 +26,6 @@ #include <set> #include <map> -#include "pbd/stateful.h" #include "midi++/event.h" #include "pbd/xml++.h" @@ -84,13 +83,12 @@ public: class PatchBank; -class Patch : public PBD::Stateful +class Patch { public: - Patch(PatchBank* a_bank = 0) : _bank(a_bank) {}; - Patch(std::string a_number, std::string a_name, PatchBank* a_bank = 0) - : _number(a_number), _name(a_name), _bank(a_bank) {}; + Patch (PatchBank* a_bank = 0); + Patch(std::string a_number, std::string a_name, PatchBank* a_bank = 0); virtual ~Patch() {}; const std::string& name() const { return _name; } @@ -102,17 +100,17 @@ public: const PatchPrimaryKey& patch_primary_key() const { return _id; } XMLNode& get_state (void); - int set_state (const XMLNode&, int version); + int set_state (const XMLTree&, const XMLNode&); + + int use_bank_info (PatchBank*); private: std::string _number; std::string _name; - // cannot use a boost::shared_ptr here in order to avoid retain cycles - PatchBank* _bank; PatchPrimaryKey _id; }; -class PatchBank : public PBD::Stateful +class PatchBank { public: typedef std::list<boost::shared_ptr<Patch> > PatchNameList; @@ -125,21 +123,25 @@ public: void set_name(const std::string a_name) { _name = a_name; } const PatchNameList& patch_name_list() const { return _patch_name_list; } - + const std::string& patch_list_name() const { return _patch_list_name; } + + int set_patch_name_list (const PatchNameList&); + const PatchPrimaryKey* patch_primary_key() const { return _id; } XMLNode& get_state (void); - int set_state (const XMLNode&, int version); + int set_state (const XMLTree&, const XMLNode&); private: std::string _name; PatchNameList _patch_name_list; PatchPrimaryKey* _id; + std::string _patch_list_name; }; #include <iostream> -class ChannelNameSet : public PBD::Stateful +class ChannelNameSet { public: typedef std::set<uint8_t> AvailableForChannels; @@ -203,7 +205,7 @@ public: } XMLNode& get_state (void); - int set_state (const XMLNode& a_node, int version); + int set_state (const XMLTree&, const XMLNode&); private: std::string _name; @@ -211,9 +213,10 @@ private: PatchBanks _patch_banks; PatchMap _patch_map; PatchList _patch_list; + std::string _patch_list_name; }; -class Note : public PBD::Stateful +class Note { public: Note() {}; @@ -227,14 +230,14 @@ public: void set_number(const std::string a_number) { _number = a_number; } XMLNode& get_state (void); - int set_state (const XMLNode&, int version); + int set_state (const XMLTree&, const XMLNode&); private: std::string _number; std::string _name; }; -class NoteNameList : public PBD::Stateful +class NoteNameList { public: typedef std::list<boost::shared_ptr<Note> > Notes; @@ -248,14 +251,14 @@ public: const Notes& notes() const { return _notes; } XMLNode& get_state (void); - int set_state (const XMLNode&, int version); + int set_state (const XMLTree&, const XMLNode&); private: std::string _name; Notes _notes; }; -class CustomDeviceMode : public PBD::Stateful +class CustomDeviceMode { public: CustomDeviceMode() {}; @@ -266,7 +269,7 @@ public: XMLNode& get_state (void); - int set_state (const XMLNode&, int version); + int set_state (const XMLTree&, const XMLNode&); std::string channel_name_set_name_by_channel(uint8_t channel) { assert(channel <= 15); @@ -280,7 +283,7 @@ private: std::string _channel_name_set_assignments[16]; }; -class MasterDeviceNames : public PBD::Stateful +class MasterDeviceNames { public: typedef std::list<std::string> Models; @@ -290,7 +293,7 @@ public: /// maps name to ChannelNameSet typedef std::map<std::string, boost::shared_ptr<ChannelNameSet> > ChannelNameSets; typedef std::list<boost::shared_ptr<NoteNameList> > NoteNameLists; - + typedef std::map<std::string, PatchBank::PatchNameList> PatchNameLists; MasterDeviceNames() {}; virtual ~MasterDeviceNames() {}; @@ -317,7 +320,7 @@ public: } XMLNode& get_state (void); - int set_state (const XMLNode&, int version); + int set_state (const XMLTree&, const XMLNode&); private: std::string _manufacturer; @@ -326,9 +329,10 @@ private: CustomDeviceModeNames _custom_device_mode_names; ChannelNameSets _channel_name_sets; NoteNameLists _note_name_lists; + PatchNameLists _patch_name_lists; }; -class MIDINameDocument : public PBD::Stateful +class MIDINameDocument { public: // Maps Model names to MasterDeviceNames @@ -346,7 +350,7 @@ public: const MasterDeviceNames::Models& all_models() const { return _all_models; } XMLNode& get_state (void); - int set_state (const XMLNode&, int version); + int set_state (const XMLTree&, const XMLNode&); private: std::string _author; |