ardour
Public Member Functions | List of all members
MementoCommandBinder< obj_T > Class Template Referenceabstract

#include <memento_command.h>

Inheritance diagram for MementoCommandBinder< obj_T >:
PBD::Destructible SimpleMementoCommandBinder< obj_T >

Public Member Functions

virtual obj_T * get () const =0
 
virtual std::string type_name () const
 
virtual void add_state (XMLNode *)=0
 
- Public Member Functions inherited from PBD::Destructible
 Destructible ()
 
virtual ~Destructible ()
 
void drop_references ()
 

Additional Inherited Members

- Public Attributes inherited from PBD::Destructible
PBD::Signal0< void > Destroyed
 
PBD::Signal0< void > DropReferences
 

Detailed Description

template<class obj_T>
class MementoCommandBinder< obj_T >

A class that can return a Stateful object which is the subject of a MementoCommand.

The existence of this class means that the undo record can refer to objects which don't exist in the session file. Currently this is used for

  1. MIDI automation; when MIDI automation is edited, undo records are written for the AutomationList being changed. However this AutomationList is a temporary structure, built by a MidiModel, which doesn't get written to the session file. Hence we need to be able to go from a MidiSource and Parameter to an AutomationList. This Binder mechanism allows this through MidiAutomationListBinder; the undo record stores the source and parameter, and these are bound to an AutomationList by the Binder.
  2. Crossfades; unlike regions, these are completely removed from a session when they are deleted. This means that the undo record can contain references to non-existant crossfades. To get around this, CrossfadeBinder can do `just-in-time' binding from the crossfade ID.

Definition at line 54 of file memento_command.h.

Member Function Documentation

template<class obj_T>
virtual void MementoCommandBinder< obj_T >::add_state ( XMLNode )
pure virtual
template<class obj_T>
virtual obj_T* MementoCommandBinder< obj_T >::get ( ) const
pure virtual
Returns
Stateful object to operate on

Implemented in SimpleMementoCommandBinder< obj_T >, and ARDOUR::MidiAutomationListBinder.

template<class obj_T>
virtual std::string MementoCommandBinder< obj_T >::type_name ( ) const
inlinevirtual
Returns
Name of our type

Definition at line 61 of file memento_command.h.


The documentation for this class was generated from the following file: