+
+ REGISTER_CLASS_ENUM (Delivery, Insert);
+ REGISTER_CLASS_ENUM (Delivery, Send);
+ REGISTER_CLASS_ENUM (Delivery, Listen);
+ REGISTER_CLASS_ENUM (Delivery, Main);
+ REGISTER_CLASS_ENUM (Delivery, Aux);
+ REGISTER_BITS (_Delivery_Role);
+
+ REGISTER_CLASS_ENUM (MuteMaster, PreFader);
+ REGISTER_CLASS_ENUM (MuteMaster, PostFader);
+ REGISTER_CLASS_ENUM (MuteMaster, Listen);
+ REGISTER_CLASS_ENUM (MuteMaster, Main);
+ REGISTER_BITS (_MuteMaster_MutePoint);
+
+ REGISTER_CLASS_ENUM (IO, Input);
+ REGISTER_CLASS_ENUM (IO, Output);
+ REGISTER (_IO_Direction);
+
+ REGISTER_CLASS_ENUM (MidiModel::NoteDiffCommand, NoteNumber);
+ REGISTER_CLASS_ENUM (MidiModel::NoteDiffCommand, Channel);
+ REGISTER_CLASS_ENUM (MidiModel::NoteDiffCommand, Velocity);
+ REGISTER_CLASS_ENUM (MidiModel::NoteDiffCommand, StartTime);
+ REGISTER_CLASS_ENUM (MidiModel::NoteDiffCommand, Length);
+ REGISTER (_MidiModel_NoteDiffCommand_Property);
+
+ REGISTER_CLASS_ENUM (MidiModel::SysExDiffCommand, Time);
+ REGISTER (_MidiModel_SysExDiffCommand_Property);
+
+ REGISTER_CLASS_ENUM (MidiModel::PatchChangeDiffCommand, Time);
+ REGISTER_CLASS_ENUM (MidiModel::PatchChangeDiffCommand, Program);
+ REGISTER_CLASS_ENUM (MidiModel::PatchChangeDiffCommand, Bank);
+ REGISTER (_MidiModel_PatchChangeDiffCommand_Property);
+
+ REGISTER_ENUM(Linear);
+ REGISTER_ENUM(Logarithmic);
+ REGISTER(_WaveformScale);
+
+ REGISTER_ENUM(Traditional);
+ REGISTER_ENUM(Rectified);
+ REGISTER(_WaveformShape);
+
+ REGISTER_ENUM(Plain);
+ REGISTER_ENUM(Legato);
+ REGISTER_ENUM(Groove);
+ REGISTER(_QuantizeType);
+
+ REGISTER_ENUM(AudioTime);
+ REGISTER_ENUM(MusicTime);
+ REGISTER(_PositionLockStyle);
+}
+
+} /* namespace ARDOUR */
+
+/* deserializing types from ardour/types.h */
+
+std::istream& operator>>(std::istream& o, HeaderFormat& var)
+{
+ std::string s;
+ o >> s;
+ var = (HeaderFormat) string_2_enum (s, var);
+ return o;
+}
+
+std::ostream& operator<<(std::ostream& o, const HeaderFormat& var)
+{
+ std::string s = enum_2_string (var);
+ return o << s;
+}
+
+std::istream& operator>>(std::istream& o, SampleFormat& var)
+{
+ std::string s;
+ o >> s;
+ var = (SampleFormat) string_2_enum (s, var);
+ return o;
+}
+
+std::ostream& operator<<(std::ostream& o, const SampleFormat& var)
+{
+ std::string s = enum_2_string (var);
+ return o << s;
+}
+std::istream& operator>>(std::istream& o, AutoConnectOption& var)
+{
+ std::string s;
+ o >> s;
+ var = (AutoConnectOption) string_2_enum (s, var);
+ return o;
+}
+
+std::ostream& operator<<(std::ostream& o, const AutoConnectOption& var)
+{
+ std::string s = enum_2_string (var);
+ return o << s;
+}
+std::istream& operator>>(std::istream& o, MonitorModel& var)
+{
+ std::string s;
+ o >> s;
+ var = (MonitorModel) string_2_enum (s, var);
+ return o;
+}
+
+std::ostream& operator<<(std::ostream& o, const MonitorModel& var)
+{
+ std::string s = enum_2_string (var);
+ return o << s;
+}
+std::istream& operator>>(std::istream& o, RemoteModel& var)
+{
+ std::string s;
+ o >> s;
+ var = (RemoteModel) string_2_enum (s, var);
+ return o;
+}
+
+std::ostream& operator<<(std::ostream& o, const RemoteModel& var)
+{
+ std::string s = enum_2_string (var);
+ return o << s;
+}
+std::istream& operator>>(std::istream& o, EditMode& var)
+{
+ std::string s;
+ o >> s;
+ var = (EditMode) string_2_enum (s, var);
+ return o;
+}
+
+std::ostream& operator<<(std::ostream& o, const EditMode& var)
+{
+ std::string s = enum_2_string (var);
+ return o << s;
+}
+std::istream& operator>>(std::istream& o, ListenPosition& var)
+{
+ std::string s;
+ o >> s;
+ var = (ListenPosition) string_2_enum (s, var);
+ return o;
+}
+
+std::ostream& operator<<(std::ostream& o, const ListenPosition& var)
+{
+ std::string s = enum_2_string (var);
+ return o << s;
+}
+std::istream& operator>>(std::istream& o, LayerModel& var)
+{
+ std::string s;
+ o >> s;
+ var = (LayerModel) string_2_enum (s, var);
+ return o;
+}
+
+std::ostream& operator<<(std::ostream& o, const LayerModel& var)
+{
+ std::string s = enum_2_string (var);
+ return o << s;
+}
+
+std::istream& operator>>(std::istream& o, InsertMergePolicy& var)
+{
+ std::string s;
+ o >> s;
+ var = (InsertMergePolicy) string_2_enum (s, var);
+ return o;
+}
+std::ostream& operator<<(std::ostream& o, const InsertMergePolicy& var)
+{
+ std::string s = enum_2_string (var);
+ return o << s;
+}
+
+std::istream& operator>>(std::istream& o, CrossfadeModel& var)
+{
+ std::string s;
+ o >> s;
+ var = (CrossfadeModel) string_2_enum (s, var);
+ return o;
+}
+
+std::ostream& operator<<(std::ostream& o, const CrossfadeModel& var)
+{
+ std::string s = enum_2_string (var);
+ return o << s;
+}
+std::istream& operator>>(std::istream& o, SyncSource& var)
+{
+ std::string s;
+ o >> s;
+ var = (SyncSource) string_2_enum (s, var);
+ return o;
+}
+
+std::ostream& operator<<(std::ostream& o, const SyncSource& var)
+{
+ std::string s = enum_2_string (var);
+ return o << s;
+}
+std::istream& operator>>(std::istream& o, ShuttleBehaviour& var)
+{
+ std::string s;
+ o >> s;
+ var = (ShuttleBehaviour) string_2_enum (s, var);
+ return o;
+}
+
+std::ostream& operator<<(std::ostream& o, const ShuttleBehaviour& var)
+{
+ std::string s = enum_2_string (var);
+ return o << s;
+}
+std::istream& operator>>(std::istream& o, ShuttleUnits& var)
+{
+ std::string s;
+ o >> s;
+ var = (ShuttleUnits) string_2_enum (s, var);
+ return o;
+}
+
+std::ostream& operator<<(std::ostream& o, const ShuttleUnits& var)
+{
+ std::string s = enum_2_string (var);
+ return o << s;
+}
+std::istream& operator>>(std::istream& o, TimecodeFormat& var)
+{
+ std::string s;
+ o >> s;
+ var = (TimecodeFormat) string_2_enum (s, var);
+ return o;
+}
+
+std::ostream& operator<<(std::ostream& o, const TimecodeFormat& var)
+{
+ std::string s = enum_2_string (var);
+ return o << s;
+}
+std::istream& operator>>(std::istream& o, DenormalModel& var)
+{
+ std::string s;
+ o >> s;
+ var = (DenormalModel) string_2_enum (s, var);
+ return o;
+}
+
+std::ostream& operator<<(std::ostream& o, const DenormalModel& var)
+{
+ std::string s = enum_2_string (var);
+ return o << s;
+}
+std::istream& operator>>(std::istream& o, WaveformScale& var)
+{
+ std::string s;
+ o >> s;
+ var = (WaveformScale) string_2_enum (s, var);
+ return o;
+}
+
+std::ostream& operator<<(std::ostream& o, const WaveformScale& var)
+{
+ std::string s = enum_2_string (var);
+ return o << s;
+}
+std::istream& operator>>(std::istream& o, WaveformShape& var)
+{
+ std::string s;
+ o >> s;
+ var = (WaveformShape) string_2_enum (s, var);
+ return o;
+}
+
+std::ostream& operator<<(std::ostream& o, const WaveformShape& var)
+{
+ std::string s = enum_2_string (var);
+ return o << s;
+}
+
+std::istream& operator>>(std::istream& o, PositionLockStyle& var)
+{
+ std::string s;
+ o >> s;
+ var = (PositionLockStyle) string_2_enum (s, var);
+ return o;
+}
+
+std::ostream& operator<<(std::ostream& o, const PositionLockStyle& var)
+{
+ std::string s = enum_2_string (var);
+ return o << s;