add enum registration for DiskIOPoint
[ardour.git] / libs / ardour / enums.cc
index e60977a3e52fa26a25c1f472bc5d07d0458d081f..103e42402bd98921a519b07c07fe71f029bad2ba 100644 (file)
@@ -23,7 +23,7 @@
 #include "evoral/Range.hpp" // shouldn't Evoral have its own enum registration?
 
 #include "ardour/delivery.h"
-#include "ardour/diskstream.h"
+#include "ardour/disk_io.h"
 #include "ardour/export_channel.h"
 #include "ardour/export_filename.h"
 #include "ardour/export_format_base.h"
 #include "ardour/io.h"
 #include "ardour/location.h"
 #include "ardour/midi_model.h"
+#include "ardour/mode.h"
 #include "ardour/mute_master.h"
+#include "ardour/presentation_info.h"
 #include "ardour/session.h"
 #include "ardour/source.h"
+#include "ardour/tempo.h"
 #include "ardour/track.h"
 #include "ardour/types.h"
 
@@ -55,6 +58,7 @@ setup_enum_writer ()
        AlignStyle _AlignStyle;
        AlignChoice _AlignChoice;
        MeterPoint _MeterPoint;
+       DiskIOPoint _DiskIOPoint;
        MeterType _MeterType;
        TrackMode _TrackMode;
        NoteMode _NoteMode;
@@ -72,10 +76,8 @@ setup_enum_writer ()
        MonitorState _MonitorState;
        PFLPosition _PFLPosition;
        AFLPosition _AFLPosition;
-       RemoteModel _RemoteModel;
        DenormalModel _DenormalModel;
-       CrossfadeModel _CrossfadeModel;
-       CrossfadeChoice _CrossfadeChoice;
+       LayerModel _LayerModel;
        InsertMergePolicy _InsertMergePolicy;
        ListenPosition _ListenPosition;
        SampleFormat _SampleFormat;
@@ -87,21 +89,22 @@ setup_enum_writer ()
        ShuttleUnits _ShuttleUnits;
        Session::RecordState _Session_RecordState;
        SessionEvent::Type _SessionEvent_Type;
+       SessionEvent::Action _SessionEvent_Action;
        TimecodeFormat _Session_TimecodeFormat;
        Session::PullupFormat _Session_PullupFormat;
        FadeShape _FadeShape;
+       RegionSelectionAfterSplit _RegionSelectionAfterSplit;
        IOChange _IOChange;
        AutomationType _AutomationType;
        AutoState _AutoState;
-       AutoStyle _AutoStyle;
        AutoConnectOption _AutoConnectOption;
-       RouteSortOrderKey _RouteSortOrderKey;
+       TracksAutoNamingRule _TracksAutoNamingRule;
        Session::StateOfTheState _Session_StateOfTheState;
-       Route::Flag _Route_Flag;
        Source::Flag _Source_Flag;
-       Diskstream::Flag _Diskstream_Flag;
+       DiskIOProcessor::Flag _DiskIOProcessor_Flag;
        Location::Flags _Location_Flags;
        PositionLockStyle _PositionLockStyle;
+       TempoSection::Type _TempoSection_Type;
        Track::FreezeState _Track_FreezeState;
        AutomationList::InterpolationStyle _AutomationList_InterpolationStyle;
        AnyTime::Type _AnyTime_Type;
@@ -129,35 +132,55 @@ setup_enum_writer ()
        Session::SlaveState _Session_SlaveState;
        MTC_Status _MIDI_MTC_Status;
        Evoral::OverlapType _OverlapType;
-
+       BufferingPreset _BufferingPreset;
+       AutoReturnTarget _AutoReturnTarget;
+       PresentationInfo::Flag _PresentationInfo_Flag;
+       MusicalMode::Type mode;
+       MidiPortFlags _MidiPortFlags;
+               
 #define REGISTER(e) enum_writer.register_distinct (typeid(e).name(), i, s); i.clear(); s.clear()
 #define REGISTER_BITS(e) enum_writer.register_bits (typeid(e).name(), i, s); i.clear(); s.clear()
 #define REGISTER_ENUM(e) i.push_back (e); s.push_back (#e)
 #define REGISTER_CLASS_ENUM(t,e) i.push_back (t::e); s.push_back (#e)
 
+       REGISTER_ENUM (NullAutomation);
        REGISTER_ENUM (GainAutomation);
        REGISTER_ENUM (PanAzimuthAutomation);
        REGISTER_ENUM (PanElevationAutomation);
        REGISTER_ENUM (PanWidthAutomation);
+       REGISTER_ENUM (PanFrontBackAutomation);
+       REGISTER_ENUM (PanLFEAutomation);
        REGISTER_ENUM (PluginAutomation);
+       REGISTER_ENUM (PluginPropertyAutomation);
        REGISTER_ENUM (SoloAutomation);
+       REGISTER_ENUM (SoloIsolateAutomation);
+       REGISTER_ENUM (SoloSafeAutomation);
        REGISTER_ENUM (MuteAutomation);
        REGISTER_ENUM (MidiCCAutomation);
+       REGISTER_ENUM (MidiPgmChangeAutomation);
+       REGISTER_ENUM (MidiPitchBenderAutomation);
+       REGISTER_ENUM (MidiChannelPressureAutomation);
+       REGISTER_ENUM (MidiNotePressureAutomation);
+       REGISTER_ENUM (MidiSystemExclusiveAutomation);
        REGISTER_ENUM (FadeInAutomation);
        REGISTER_ENUM (FadeOutAutomation);
        REGISTER_ENUM (EnvelopeAutomation);
-       REGISTER_BITS (_AutomationType);
+       REGISTER_ENUM (RecEnableAutomation);
+       REGISTER_ENUM (RecSafeAutomation);
+       REGISTER_ENUM (TrimAutomation);
+       REGISTER_ENUM (PhaseAutomation);
+       REGISTER_ENUM (MonitoringAutomation);
+       REGISTER_ENUM (BusSendLevel);
+       REGISTER_ENUM (BusSendEnable);
+       REGISTER (_AutomationType);
 
        REGISTER_ENUM (Off);
        REGISTER_ENUM (Write);
        REGISTER_ENUM (Touch);
        REGISTER_ENUM (Play);
+       REGISTER_ENUM (Latch);
        REGISTER_BITS (_AutoState);
 
-       REGISTER_ENUM (Absolute);
-       REGISTER_ENUM (Trim);
-       REGISTER_BITS (_AutoStyle);
-
        REGISTER_ENUM (CaptureTime);
        REGISTER_ENUM (ExistingMaterial);
        REGISTER (_AlignStyle);
@@ -174,17 +197,25 @@ setup_enum_writer ()
        REGISTER_ENUM (MeterCustom);
        REGISTER (_MeterPoint);
 
+       REGISTER_ENUM (DiskIOPreFader);
+       REGISTER_ENUM (DiskIOPostFader);
+       REGISTER_ENUM (DiskIOCustom);
+       REGISTER (_DiskIOPoint);
+
        REGISTER_ENUM (MeterMaxSignal);
        REGISTER_ENUM (MeterMaxPeak);
        REGISTER_ENUM (MeterPeak);
        REGISTER_ENUM (MeterKrms);
        REGISTER_ENUM (MeterK20);
        REGISTER_ENUM (MeterK14);
+       REGISTER_ENUM (MeterK12);
        REGISTER_ENUM (MeterIEC1DIN);
        REGISTER_ENUM (MeterIEC1NOR);
        REGISTER_ENUM (MeterIEC2BBC);
        REGISTER_ENUM (MeterIEC2EBU);
        REGISTER_ENUM (MeterVU);
+       REGISTER_ENUM (MeterPeak0dB);
+       REGISTER_ENUM (MeterMCP);
        REGISTER (_MeterType);
 
        REGISTER_ENUM (Normal);
@@ -226,6 +257,7 @@ setup_enum_writer ()
        REGISTER_ENUM (MeteringVUfrench);
        REGISTER_ENUM (MeteringVUamerican);
        REGISTER_ENUM (MeteringVUstandard);
+       REGISTER_ENUM (MeteringVUeight);
        REGISTER (_VUMeterStandard);
 
        REGISTER_ENUM (MeteringLineUp24);
@@ -236,8 +268,14 @@ setup_enum_writer ()
 
        REGISTER_ENUM (Slide);
        REGISTER_ENUM (Splice);
+       REGISTER_ENUM (Ripple); // XXX do the old enum values have to stay in order?
        REGISTER_ENUM (Lock);
        REGISTER (_EditMode);
+       /*
+        * Splice mode is undefined, undocumented, and basically fubar'ed
+        * perhaps someday we will make it work.  but for now, avoid it
+       */
+       enum_writer.add_to_hack_table ("Splice", "Slide");
 
        REGISTER_ENUM (Start);
        REGISTER_ENUM (End);
@@ -278,27 +316,24 @@ setup_enum_writer ()
        REGISTER_ENUM (DenormalFTZDAZ);
        REGISTER (_DenormalModel);
 
-       REGISTER_ENUM (UserOrdered);
-       REGISTER_ENUM (MixerOrdered);
-       REGISTER_ENUM (EditorOrdered);
-       REGISTER (_RemoteModel);
-
-       REGISTER_ENUM (FullCrossfade);
-       REGISTER_ENUM (ShortCrossfade);
-       REGISTER (_CrossfadeModel);
-
-       REGISTER_ENUM (RegionFades);
-       REGISTER_ENUM (ConstantPowerMinus3dB);
-       REGISTER_ENUM (ConstantPowerMinus6dB);
-       REGISTER (_CrossfadeChoice);
-
-        REGISTER_ENUM (InsertMergeReject);
-        REGISTER_ENUM (InsertMergeRelax);
-        REGISTER_ENUM (InsertMergeReplace);
-        REGISTER_ENUM (InsertMergeTruncateExisting);
-        REGISTER_ENUM (InsertMergeTruncateAddition);
-        REGISTER_ENUM (InsertMergeExtend);
-        REGISTER (_InsertMergePolicy);
+       /*
+        * EditorOrdered has been deprecated
+        * since the removal of independent
+        * editor / mixer ordering.
+       */
+       enum_writer.add_to_hack_table ("EditorOrdered", "MixerOrdered");
+
+       REGISTER_ENUM (LaterHigher);
+       REGISTER_ENUM (Manual);
+       REGISTER (_LayerModel);
+
+       REGISTER_ENUM (InsertMergeReject);
+       REGISTER_ENUM (InsertMergeRelax);
+       REGISTER_ENUM (InsertMergeReplace);
+       REGISTER_ENUM (InsertMergeTruncateExisting);
+       REGISTER_ENUM (InsertMergeTruncateAddition);
+       REGISTER_ENUM (InsertMergeExtend);
+       REGISTER (_InsertMergePolicy);
 
        REGISTER_ENUM (AfterFaderListen);
        REGISTER_ENUM (PreFaderListen);
@@ -308,6 +343,10 @@ setup_enum_writer ()
        REGISTER_ENUM (AutoConnectMaster);
        REGISTER_BITS (_AutoConnectOption);
 
+       REGISTER_ENUM (UseDefaultNames);
+       REGISTER_ENUM (NameAfterDriver);
+       REGISTER_BITS (_TracksAutoNamingRule);
+
        REGISTER_ENUM (FormatFloat);
        REGISTER_ENUM (FormatInt24);
        REGISTER_ENUM (FormatInt16);
@@ -325,16 +364,22 @@ setup_enum_writer ()
        REGISTER_ENUM (AIFF);
        REGISTER_ENUM (iXML);
        REGISTER_ENUM (RF64);
+       REGISTER_ENUM (RF64_WAV);
+       REGISTER_ENUM (MBWF);
        REGISTER (_HeaderFormat);
 
        REGISTER_ENUM (AudioUnit);
        REGISTER_ENUM (LADSPA);
+       REGISTER_ENUM (LV2);
        REGISTER_ENUM (Windows_VST);
        REGISTER_ENUM (LXVST);
+       REGISTER_ENUM (MacVST);
+       REGISTER_ENUM (Lua);
        REGISTER (_PluginType);
 
        REGISTER_ENUM (MTC);
        REGISTER_ENUM (JACK);
+       REGISTER_ENUM (Engine);
        REGISTER_ENUM (MIDIClock);
        REGISTER_ENUM (LTC);
        REGISTER (_SyncSource);
@@ -353,7 +398,6 @@ setup_enum_writer ()
        REGISTER (_Session_RecordState);
 
        REGISTER_CLASS_ENUM (SessionEvent, SetTransportSpeed);
-       REGISTER_CLASS_ENUM (SessionEvent, SetTrackSpeed);
        REGISTER_CLASS_ENUM (SessionEvent, Locate);
        REGISTER_CLASS_ENUM (SessionEvent, LocateRoll);
        REGISTER_CLASS_ENUM (SessionEvent, LocateRollLocate);
@@ -365,12 +409,24 @@ setup_enum_writer ()
        REGISTER_CLASS_ENUM (SessionEvent, Overwrite);
        REGISTER_CLASS_ENUM (SessionEvent, SetSyncSource);
        REGISTER_CLASS_ENUM (SessionEvent, Audition);
-       REGISTER_CLASS_ENUM (SessionEvent, InputConfigurationChange);
        REGISTER_CLASS_ENUM (SessionEvent, SetPlayAudioRange);
+       REGISTER_CLASS_ENUM (SessionEvent, CancelPlayAudioRange);
+       REGISTER_CLASS_ENUM (SessionEvent, RealTimeOperation);
+       REGISTER_CLASS_ENUM (SessionEvent, AdjustPlaybackBuffering);
+       REGISTER_CLASS_ENUM (SessionEvent, AdjustCaptureBuffering);
+       REGISTER_CLASS_ENUM (SessionEvent, SetTimecodeTransmission);
+       REGISTER_CLASS_ENUM (SessionEvent, Skip);
        REGISTER_CLASS_ENUM (SessionEvent, StopOnce);
        REGISTER_CLASS_ENUM (SessionEvent, AutoLoop);
+       REGISTER_CLASS_ENUM (SessionEvent, AutoLoopDeclick);
        REGISTER (_SessionEvent_Type);
 
+       REGISTER_CLASS_ENUM (SessionEvent, Add);
+       REGISTER_CLASS_ENUM (SessionEvent, Remove);
+       REGISTER_CLASS_ENUM (SessionEvent, Replace);
+       REGISTER_CLASS_ENUM (SessionEvent, Clear);
+       REGISTER (_SessionEvent_Action);
+
        REGISTER_CLASS_ENUM (Session, Stopped);
        REGISTER_CLASS_ENUM (Session, Waiting);
        REGISTER_CLASS_ENUM (Session, Running);
@@ -427,15 +483,6 @@ setup_enum_writer ()
        REGISTER_CLASS_ENUM (Session, pullup_Minus4Minus1);
        REGISTER (_Session_PullupFormat);
 
-       REGISTER_CLASS_ENUM (Route, Auditioner);
-       REGISTER_CLASS_ENUM (Route, MasterOut);
-       REGISTER_CLASS_ENUM (Route, MonitorOut);
-       REGISTER_BITS (_Route_Flag);
-
-       REGISTER_ENUM (MixerSort);
-       REGISTER_ENUM (EditorSort);
-       REGISTER (_RouteSortOrderKey);
-
        REGISTER_CLASS_ENUM (Source, Writable);
        REGISTER_CLASS_ENUM (Source, CanRename);
        REGISTER_CLASS_ENUM (Source, Broadcast);
@@ -444,6 +491,7 @@ setup_enum_writer ()
        REGISTER_CLASS_ENUM (Source, RemoveAtDestroy);
        REGISTER_CLASS_ENUM (Source, NoPeakFile);
        REGISTER_CLASS_ENUM (Source, Destructive);
+       REGISTER_CLASS_ENUM (Source, Empty);
        REGISTER_BITS (_Source_Flag);
 
        REGISTER_ENUM (FadeLinear);
@@ -453,10 +501,20 @@ setup_enum_writer ()
        REGISTER_ENUM (FadeSymmetric);
        REGISTER (_FadeShape);
 
-       REGISTER_CLASS_ENUM (Diskstream, Recordable);
-       REGISTER_CLASS_ENUM (Diskstream, Hidden);
-       REGISTER_CLASS_ENUM (Diskstream, Destructive);
-       REGISTER_BITS (_Diskstream_Flag);
+       REGISTER_ENUM(None);
+       REGISTER_ENUM(NewlyCreatedLeft);
+       REGISTER_ENUM(NewlyCreatedRight);
+       REGISTER_ENUM(NewlyCreatedBoth);
+       REGISTER_ENUM(Existing);
+       REGISTER_ENUM(ExistingNewlyCreatedLeft);
+       REGISTER_ENUM(ExistingNewlyCreatedRight);
+       REGISTER_ENUM(ExistingNewlyCreatedBoth);
+       REGISTER (_RegionSelectionAfterSplit);
+
+       REGISTER_CLASS_ENUM (DiskIOProcessor, Recordable);
+       REGISTER_CLASS_ENUM (DiskIOProcessor, Hidden);
+       REGISTER_CLASS_ENUM (DiskIOProcessor, Destructive);
+       REGISTER_BITS (_DiskIOProcessor_Flag);
 
        REGISTER_CLASS_ENUM (Location, IsMark);
        REGISTER_CLASS_ENUM (Location, IsAutoPunch);
@@ -465,8 +523,13 @@ setup_enum_writer ()
        REGISTER_CLASS_ENUM (Location, IsCDMarker);
        REGISTER_CLASS_ENUM (Location, IsSessionRange);
        REGISTER_CLASS_ENUM (Location, IsRangeMarker);
+       REGISTER_CLASS_ENUM (Location, IsSkip);
        REGISTER_BITS (_Location_Flags);
 
+       REGISTER_CLASS_ENUM (TempoSection, Ramp);
+       REGISTER_CLASS_ENUM (TempoSection, Constant);
+       REGISTER (_TempoSection_Type);
+
        REGISTER_CLASS_ENUM (Track, NoFreeze);
        REGISTER_CLASS_ENUM (Track, Frozen);
        REGISTER_CLASS_ENUM (Track, UnFrozen);
@@ -475,6 +538,8 @@ setup_enum_writer ()
        REGISTER_CLASS_ENUM (AutomationList, Discrete);
        REGISTER_CLASS_ENUM (AutomationList, Linear);
        REGISTER_CLASS_ENUM (AutomationList, Curved);
+       REGISTER_CLASS_ENUM (AutomationList, Logarithmic);
+       REGISTER_CLASS_ENUM (AutomationList, Exponential);
        REGISTER (_AutomationList_InterpolationStyle);
 
        REGISTER_CLASS_ENUM (AnyTime, Timecode);
@@ -508,6 +573,7 @@ setup_enum_writer ()
        REGISTER_CLASS_ENUM (ExportFormatBase, F_RAW);
        REGISTER_CLASS_ENUM (ExportFormatBase, F_FLAC);
        REGISTER_CLASS_ENUM (ExportFormatBase, F_Ogg);
+       REGISTER_CLASS_ENUM (ExportFormatBase, F_CAF);
        REGISTER (_ExportFormatBase_FormatId);
 
        REGISTER_CLASS_ENUM (ExportFormatBase, E_FileDefault);
@@ -602,6 +668,11 @@ setup_enum_writer ()
        REGISTER_CLASS_ENUM (MidiModel::PatchChangeDiffCommand, Bank);
        REGISTER (_MidiModel_PatchChangeDiffCommand_Property);
 
+       REGISTER_ENUM(MidiPortMusic);
+       REGISTER_ENUM(MidiPortControl);
+       REGISTER_ENUM(MidiPortSelection);
+       REGISTER_BITS(_MidiPortFlags);
+
        REGISTER_ENUM(Linear);
        REGISTER_ENUM(Logarithmic);
        REGISTER(_WaveformScale);
@@ -620,320 +691,69 @@ setup_enum_writer ()
        REGISTER_ENUM (Evoral::OverlapEnd);
        REGISTER_ENUM (Evoral::OverlapExternal);
        REGISTER(_OverlapType);
-}
-
-} /* 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, VUMeterStandard& var)
-{
-       std::string s;
-       o >> s;
-       var = (VUMeterStandard) string_2_enum (s, var);
-       return o;
-}
-
-std::ostream& operator<<(std::ostream& o, const VUMeterStandard& var)
-{
-       std::string s = enum_2_string (var);
-       return o << s;
-}
-
-std::istream& operator>>(std::istream& o, MeterLineUp& var)
-{
-       std::string s;
-       o >> s;
-       var = (MeterLineUp) string_2_enum (s, var);
-       return o;
-}
-
-std::ostream& operator<<(std::ostream& o, const MeterLineUp& var)
-{
-       std::string s = enum_2_string (var);
-       return o << s;
-}
-
-std::istream& operator>>(std::istream& o, PFLPosition& var)
-{
-       std::string s;
-       o >> s;
-       var = (PFLPosition) string_2_enum (s, var);
-       return o;
-}
-
-std::ostream& operator<<(std::ostream& o, const PFLPosition& var)
-{
-       std::string s = enum_2_string (var);
-       return o << s;
-}
-
-std::istream& operator>>(std::istream& o, AFLPosition& var)
-{
-       std::string s;
-       o >> s;
-       var = (AFLPosition) string_2_enum (s, var);
-       return o;
-}
-
-std::ostream& operator<<(std::ostream& o, const AFLPosition& 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, 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, CrossfadeChoice& var)
-{
-       std::string s;
-       o >> s;
-       var = (CrossfadeChoice) string_2_enum (s, var);
-       return o;
-}
-
-std::ostream& operator<<(std::ostream& o, const CrossfadeChoice& 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;
+       REGISTER_ENUM (Small);
+       REGISTER_ENUM (Medium);
+       REGISTER_ENUM (Large);
+       REGISTER_ENUM (Custom);
+       REGISTER(_BufferingPreset);
+
+       REGISTER_ENUM (LastLocate);
+       REGISTER_ENUM (RangeSelectionStart);
+       REGISTER_ENUM (Loop);
+       REGISTER_ENUM (RegionSelectionStart);
+       REGISTER_BITS (_AutoReturnTarget);
+
+       REGISTER_CLASS_ENUM (PresentationInfo, AudioTrack);
+       REGISTER_CLASS_ENUM (PresentationInfo, MidiTrack);
+       REGISTER_CLASS_ENUM (PresentationInfo, AudioBus);
+       REGISTER_CLASS_ENUM (PresentationInfo, MidiBus);
+       REGISTER_CLASS_ENUM (PresentationInfo, VCA);
+       REGISTER_CLASS_ENUM (PresentationInfo, MasterOut);
+       REGISTER_CLASS_ENUM (PresentationInfo, MonitorOut);
+       REGISTER_CLASS_ENUM (PresentationInfo, Auditioner);
+       REGISTER_CLASS_ENUM (PresentationInfo, Hidden);
+       REGISTER_CLASS_ENUM (PresentationInfo, OrderSet);
+       REGISTER_BITS (_PresentationInfo_Flag);
+
+       REGISTER_CLASS_ENUM (MusicalMode,Dorian);
+       REGISTER_CLASS_ENUM (MusicalMode, IonianMajor);
+       REGISTER_CLASS_ENUM (MusicalMode, AeolianMinor);
+       REGISTER_CLASS_ENUM (MusicalMode, HarmonicMinor);
+       REGISTER_CLASS_ENUM (MusicalMode, MelodicMinorAscending);
+       REGISTER_CLASS_ENUM (MusicalMode, MelodicMinorDescending);
+       REGISTER_CLASS_ENUM (MusicalMode, Phrygian);
+       REGISTER_CLASS_ENUM (MusicalMode, Lydian);
+       REGISTER_CLASS_ENUM (MusicalMode, Mixolydian);
+       REGISTER_CLASS_ENUM (MusicalMode, Locrian);
+       REGISTER_CLASS_ENUM (MusicalMode, PentatonicMajor);
+       REGISTER_CLASS_ENUM (MusicalMode, PentatonicMinor);
+       REGISTER_CLASS_ENUM (MusicalMode, Chromatic);
+       REGISTER_CLASS_ENUM (MusicalMode, BluesScale);
+       REGISTER_CLASS_ENUM (MusicalMode, NeapolitanMinor);
+       REGISTER_CLASS_ENUM (MusicalMode, NeapolitanMajor);
+       REGISTER_CLASS_ENUM (MusicalMode, Oriental);
+       REGISTER_CLASS_ENUM (MusicalMode, DoubleHarmonic);
+       REGISTER_CLASS_ENUM (MusicalMode, Enigmatic);
+       REGISTER_CLASS_ENUM (MusicalMode, Hirajoshi);
+       REGISTER_CLASS_ENUM (MusicalMode, HungarianMinor);
+       REGISTER_CLASS_ENUM (MusicalMode, HungarianMajor);
+       REGISTER_CLASS_ENUM (MusicalMode, Kumoi);
+       REGISTER_CLASS_ENUM (MusicalMode, Iwato);
+       REGISTER_CLASS_ENUM (MusicalMode, Hindu);
+       REGISTER_CLASS_ENUM (MusicalMode, Spanish8Tone);
+       REGISTER_CLASS_ENUM (MusicalMode, Pelog);
+       REGISTER_CLASS_ENUM (MusicalMode, HungarianGypsy);
+       REGISTER_CLASS_ENUM (MusicalMode, Overtone);
+       REGISTER_CLASS_ENUM (MusicalMode, LeadingWholeTone);
+       REGISTER_CLASS_ENUM (MusicalMode, Arabian);
+       REGISTER_CLASS_ENUM (MusicalMode, Balinese);
+       REGISTER_CLASS_ENUM (MusicalMode, Gypsy);
+       REGISTER_CLASS_ENUM (MusicalMode, Mohammedan);
+       REGISTER_CLASS_ENUM (MusicalMode, Javanese);
+       REGISTER_CLASS_ENUM (MusicalMode, Persian);
+       REGISTER_CLASS_ENUM (MusicalMode, Algerian);
+       REGISTER (mode);
 }
 
-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;
-}
-
-std::istream& operator>>(std::istream& o, Evoral::OverlapType& var)
-{
-       std::string s;
-       o >> s;
-       var = (Evoral::OverlapType) string_2_enum (s, var);
-       return o;
-}
-
-std::ostream& operator<<(std::ostream& o, const Evoral::OverlapType& var)
-{
-       std::string s = enum_2_string (var);
-       return o << s;
-}
+} /* namespace ARDOUR */