Tidy.
[ardour.git] / libs / ardour / ardour / automatable.h
index 8cfadec638ace9eb9cefa90da3029c8bd0d8819b..98ab28d12ddbfe4e55e452dd6ce154e2f1e031ca 100644 (file)
@@ -23,9 +23,6 @@
 #include <set>
 #include <map>
 #include <boost/shared_ptr.hpp>
-#include <ardour/session_object.h>
-#include <ardour/automation_list.h>
-#include <ardour/automation_control.h>
 #include <ardour/event_type_map.h>
 #include <evoral/ControlSet.hpp>
 #include <evoral/Sequence.hpp>
@@ -50,6 +47,12 @@ public:
        boost::shared_ptr<Evoral::Control>
        control_factory(const Evoral::Parameter& id);
 
+       boost::shared_ptr<AutomationControl>
+       automation_control (const Evoral::Parameter& id, bool create_if_missing=false);
+       
+       boost::shared_ptr<const AutomationControl>
+       automation_control (const Evoral::Parameter& id) const;
+
        virtual void add_control(boost::shared_ptr<Evoral::Control>);
        
        virtual void automation_snapshot(nframes_t now, bool force);
@@ -88,15 +91,16 @@ public:
        Evoral::ControlSet&       data()       { return *this; }
        const Evoral::ControlSet& data() const { return *this; }
 
-protected:
+       int set_automation_state (const XMLNode&, Evoral::Parameter default_param);
+       XMLNode& get_automation_state();
+
+  protected:
        Session& _a_session;
 
        void can_automate(Evoral::Parameter);
 
        virtual void auto_state_changed (Evoral::Parameter which) {}
 
-       int set_automation_state(const XMLNode&, Evoral::Parameter default_param);
-       XMLNode& get_automation_state();
        
        int load_automation (const std::string& path);
        int old_set_automation_state(const XMLNode&);
@@ -110,12 +114,13 @@ protected:
 
 
 /** Contains notes and controllers */
-class AutomatableSequence : public Automatable, public Evoral::Sequence {
+template<typename T>
+class AutomatableSequence : public Automatable, public Evoral::Sequence<T> {
 public:
        AutomatableSequence(Session& s, size_t size)
                : Evoral::ControlSet()
                , Automatable(s)
-               , Evoral::Sequence(EventTypeMap::instance())
+               , Evoral::Sequence<T>(EventTypeMap::instance())
        {}
 };