+ virtual bool is_dependent() const { return false; }
+ virtual bool depends_on (boost::shared_ptr<Region> /*other*/) const { return false; }
+
+ virtual int exportme (ARDOUR::Session&, ARDOUR::ExportSpecification&) = 0;
+
+ virtual void add_transient (framepos_t) {
+ // no transients, but its OK
+ }
+
+ virtual int update_transient (framepos_t /* old_position */, framepos_t /* new_position */) {
+ // no transients, but its OK
+ return 0;
+ }
+
+ virtual void remove_transient (framepos_t /* where */) {
+ // no transients, but its OK
+ }
+
+ virtual int set_transients (AnalysisFeatureList&) {
+ // no transients, but its OK
+ return 0;
+ }
+
+ virtual int get_transients (AnalysisFeatureList&, bool force_new = false) {
+ (void) force_new;
+ // no transients, but its OK
+ return 0;
+ }
+
+ virtual int adjust_transients (framepos_t /*delta*/) {
+ // no transients, but its OK
+ return 0;
+ }
+
+ virtual int separate_by_channel (ARDOUR::Session&,
+ std::vector< boost::shared_ptr<Region> >&) const {
+ return 0;
+ }
+
+ void invalidate_transients ();
+
+ void set_pending_explicit_relayer (bool p) {
+ _pending_explicit_relayer = p;
+ }
+
+ bool pending_explicit_relayer () const {
+ return _pending_explicit_relayer;
+ }
+
+ void drop_sources ();
+