Notes _notes;
};
-class Value
++class LIBMIDIPP_API Value
+ {
+ public:
+ Value() {}
+ Value(const uint16_t number,
+ const std::string& name)
+ : _number(number)
+ , _name(name)
+ {}
+
+ uint16_t number() const { return _number; }
+ const std::string& name() const { return _name; }
+
+ void set_number(uint16_t number) { _number = number; }
+ void set_name(const std::string& name) { _name = name; }
+
+ XMLNode& get_state(void);
+ int set_state(const XMLTree&, const XMLNode&);
+
+ private:
+ uint16_t _number;
+ std::string _name;
+ };
+
-class ValueNameList
++class LIBMIDIPP_API ValueNameList
+ {
+ public:
+ typedef std::map<uint16_t, boost::shared_ptr<Value> > Values;
+
+ ValueNameList() {}
+ ValueNameList(const std::string& name) : _name(name) {}
+
+ const std::string& name() const { return _name; }
+
+ void set_name(const std::string& name) { _name = name; }
+
+ boost::shared_ptr<const Value> value(uint16_t num) const;
+ boost::shared_ptr<const Value> max_value_below(uint16_t num) const;
+
+ const Values& values() const { return _values; }
+
+ XMLNode& get_state(void);
+ int set_state(const XMLTree&, const XMLNode&);
+
+ private:
+ std::string _name;
+ Values _values;
+ };
+
-class Control
+class LIBMIDIPP_API Control
{
public:
Control() {}
std::string _type;
uint16_t _number;
std::string _name;
+
+ std::string _value_name_list_name; ///< Global, UsesValueNameList
+ boost::shared_ptr<ValueNameList> _value_name_list; ///< Local, ValueNameList
};
-class ControlNameList
+class LIBMIDIPP_API ControlNameList
{
public:
typedef std::map<uint16_t, boost::shared_ptr<Control> > Controls;
NoteNameLists _note_name_lists;
PatchNameLists _patch_name_lists;
ControlNameLists _control_name_lists;
+ ValueNameLists _value_name_lists;
};
-class MIDINameDocument
+class LIBMIDIPP_API MIDINameDocument
{
public:
// Maps Model names to MasterDeviceNames