+ class ActionDefLoader: public Msp::DataFile::ObjectLoader<Sequencer>
+ {
+ protected:
+ template<typename T>
+ struct AddAction
+ {
+ static void add(ActionDefLoader &ldr, const std::string &kw) { ldr.add(kw, &ActionDefLoader::action_def<T>); }
+ };
+
+ Demo &demo;
+ Msp::RefPtr<Action> action;
+
+ public:
+ ActionDefLoader(Sequencer &, Demo &);
+
+ Action *get_action() { return action.release(); }
+
+ protected:
+ virtual void action_loaded() { }
+
+ private:
+ template<typename T>
+ void action_def();
+
+ friend class Sequencer;
+ };
+