X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fenums.cc;h=6c827923284f4ae63ae0bb04a5a36f925195a1a5;hb=07112b55e0bb7ceb9e5c05ab4df167ecaf7edd9b;hp=2d29a59e8bd418c6de71a7e918c89c95995908b3;hpb=c5bbca0cf560014e14d0d5863fb824952cb4908f;p=ardour.git diff --git a/libs/ardour/enums.cc b/libs/ardour/enums.cc index 2d29a59e8b..6c82792328 100644 --- a/libs/ardour/enums.cc +++ b/libs/ardour/enums.cc @@ -20,21 +20,20 @@ #include "pbd/enumwriter.h" #include "midi++/types.h" -#include "ardour/audiofilesource.h" -#include "ardour/audioregion.h" +#include "evoral/Range.hpp" // shouldn't Evoral have its own enum registration? + #include "ardour/delivery.h" #include "ardour/diskstream.h" +#include "ardour/export_channel.h" #include "ardour/export_filename.h" #include "ardour/export_format_base.h" #include "ardour/export_profile_manager.h" #include "ardour/io.h" #include "ardour/location.h" #include "ardour/midi_model.h" -#include "ardour/midi_track.h" #include "ardour/mute_master.h" -#include "ardour/panner.h" -#include "ardour/route_group.h" #include "ardour/session.h" +#include "ardour/source.h" #include "ardour/track.h" #include "ardour/types.h" @@ -42,6 +41,7 @@ using namespace std; using namespace PBD; using namespace ARDOUR; using namespace MIDI; +using namespace Timecode; namespace ARDOUR { @@ -52,8 +52,8 @@ setup_enum_writer () vector i; vector s; - OverlapType _OverlapType; AlignStyle _AlignStyle; + AlignChoice _AlignChoice; MeterPoint _MeterPoint; TrackMode _TrackMode; NoteMode _NoteMode; @@ -65,10 +65,14 @@ setup_enum_writer () RegionPoint _RegionPoint; Placement _Placement; MonitorModel _MonitorModel; + MonitorChoice _MonitorChoice; + MonitorState _MonitorState; + PFLPosition _PFLPosition; + AFLPosition _AFLPosition; RemoteModel _RemoteModel; DenormalModel _DenormalModel; CrossfadeModel _CrossfadeModel; - LayerModel _LayerModel; + CrossfadeChoice _CrossfadeChoice; InsertMergePolicy _InsertMergePolicy; ListenPosition _ListenPosition; SampleFormat _SampleFormat; @@ -82,13 +86,13 @@ setup_enum_writer () SessionEvent::Type _SessionEvent_Type; TimecodeFormat _Session_TimecodeFormat; Session::PullupFormat _Session_PullupFormat; - AudioRegion::FadeShape _AudioRegion_FadeShape; - Panner::LinkDirection _Panner_LinkDirection; + FadeShape _FadeShape; IOChange _IOChange; AutomationType _AutomationType; AutoState _AutoState; AutoStyle _AutoStyle; AutoConnectOption _AutoConnectOption; + RouteSortOrderKey _RouteSortOrderKey; Session::StateOfTheState _Session_StateOfTheState; Route::Flag _Route_Flag; Source::Flag _Source_Flag; @@ -109,36 +113,29 @@ setup_enum_writer () ExportFormatBase::SampleRate _ExportFormatBase_SampleRate; ExportFormatBase::SRCQuality _ExportFormatBase_SRCQuality; ExportProfileManager::TimeFormat _ExportProfileManager_TimeFormat; + RegionExportChannelFactory::Type _RegionExportChannelFactory_Type; Delivery::Role _Delivery_Role; IO::Direction _IO_Direction; MuteMaster::MutePoint _MuteMaster_MutePoint; - MidiModel::DiffCommand::Property _MidiModel_DiffCommand_Property; + MidiModel::NoteDiffCommand::Property _MidiModel_NoteDiffCommand_Property; + MidiModel::SysExDiffCommand::Property _MidiModel_SysExDiffCommand_Property; + MidiModel::PatchChangeDiffCommand::Property _MidiModel_PatchChangeDiffCommand_Property; WaveformScale _WaveformScale; WaveformShape _WaveformShape; - QuantizeType _QuantizeType; Session::PostTransportWork _Session_PostTransportWork; Session::SlaveState _Session_SlaveState; MTC_Status _MIDI_MTC_Status; + Evoral::OverlapType _OverlapType; #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 (NoChange); - REGISTER_ENUM (ConfigurationChanged); - REGISTER_ENUM (ConnectionsChanged); - REGISTER_BITS (_IOChange); - - REGISTER_ENUM (OverlapNone); - REGISTER_ENUM (OverlapInternal); - REGISTER_ENUM (OverlapStart); - REGISTER_ENUM (OverlapEnd); - REGISTER_ENUM (OverlapExternal); - REGISTER (_OverlapType); - REGISTER_ENUM (GainAutomation); - REGISTER_ENUM (PanAutomation); + REGISTER_ENUM (PanAzimuthAutomation); + REGISTER_ENUM (PanElevationAutomation); + REGISTER_ENUM (PanWidthAutomation); REGISTER_ENUM (PluginAutomation); REGISTER_ENUM (SoloAutomation); REGISTER_ENUM (MuteAutomation); @@ -162,9 +159,15 @@ setup_enum_writer () REGISTER_ENUM (ExistingMaterial); REGISTER (_AlignStyle); + REGISTER_ENUM (UseCaptureTime); + REGISTER_ENUM (UseExistingMaterial); + REGISTER_ENUM (Automatic); + REGISTER (_AlignChoice); + REGISTER_ENUM (MeterInput); REGISTER_ENUM (MeterPreFader); REGISTER_ENUM (MeterPostFader); + REGISTER_ENUM (MeterOutput); REGISTER_ENUM (MeterCustom); REGISTER (_MeterPoint); @@ -204,6 +207,7 @@ setup_enum_writer () REGISTER_ENUM (Slide); REGISTER_ENUM (Splice); + REGISTER_ENUM (Lock); REGISTER (_EditMode); REGISTER_ENUM (Start); @@ -220,6 +224,25 @@ setup_enum_writer () REGISTER_ENUM (ExternalMonitoring); REGISTER (_MonitorModel); + REGISTER_ENUM (MonitorInput); + REGISTER_ENUM (MonitorDisk); + REGISTER_ENUM (MonitorAuto); + REGISTER_ENUM (MonitorCue); + REGISTER_BITS (_MonitorChoice); + + REGISTER_ENUM (MonitoringInput); + REGISTER_ENUM (MonitoringDisk); + REGISTER_ENUM (MonitoringSilence); + REGISTER_BITS (_MonitorState); + + REGISTER_ENUM (PFLFromBeforeProcessors); + REGISTER_ENUM (PFLFromAfterProcessors); + REGISTER (_PFLPosition); + + REGISTER_ENUM (AFLFromBeforeProcessors); + REGISTER_ENUM (AFLFromAfterProcessors); + REGISTER (_AFLPosition); + REGISTER_ENUM (DenormalNone); REGISTER_ENUM (DenormalFTZ); REGISTER_ENUM (DenormalDAZ); @@ -235,11 +258,11 @@ setup_enum_writer () REGISTER_ENUM (ShortCrossfade); REGISTER (_CrossfadeModel); - REGISTER_ENUM (LaterHigher); - REGISTER_ENUM (MoveAddHigher); - REGISTER_ENUM (AddHigher); - REGISTER (_LayerModel); - + REGISTER_ENUM (RegionFades); + REGISTER_ENUM (ConstantPowerMinus3dB); + REGISTER_ENUM (ConstantPowerMinus6dB); + REGISTER (_CrossfadeChoice); + REGISTER_ENUM (InsertMergeReject); REGISTER_ENUM (InsertMergeRelax); REGISTER_ENUM (InsertMergeReplace); @@ -277,12 +300,14 @@ setup_enum_writer () REGISTER_ENUM (AudioUnit); REGISTER_ENUM (LADSPA); - REGISTER_ENUM (VST); + REGISTER_ENUM (Windows_VST); + REGISTER_ENUM (LXVST); REGISTER (_PluginType); REGISTER_ENUM (MTC); REGISTER_ENUM (JACK); REGISTER_ENUM (MIDIClock); + REGISTER_ENUM (LTC); REGISTER (_SyncSource); REGISTER_ENUM (Sprung); @@ -328,9 +353,6 @@ setup_enum_writer () REGISTER (_MIDI_MTC_Status); REGISTER_CLASS_ENUM (Session, PostTransportStop); - REGISTER_CLASS_ENUM (Session, PostTransportDisableRecord); - REGISTER_CLASS_ENUM (Session, PostTransportPosition); - REGISTER_CLASS_ENUM (Session, PostTransportDidRecord); REGISTER_CLASS_ENUM (Session, PostTransportDuration); REGISTER_CLASS_ENUM (Session, PostTransportLocate); REGISTER_CLASS_ENUM (Session, PostTransportRoll); @@ -338,7 +360,6 @@ setup_enum_writer () REGISTER_CLASS_ENUM (Session, PostTransportOverWrite); REGISTER_CLASS_ENUM (Session, PostTransportSpeed); REGISTER_CLASS_ENUM (Session, PostTransportAudition); - REGISTER_CLASS_ENUM (Session, PostTransportScrub); REGISTER_CLASS_ENUM (Session, PostTransportReverse); REGISTER_CLASS_ENUM (Session, PostTransportInputChange); REGISTER_CLASS_ENUM (Session, PostTransportCurveRealloc); @@ -382,6 +403,10 @@ setup_enum_writer () 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); @@ -392,12 +417,12 @@ setup_enum_writer () REGISTER_CLASS_ENUM (Source, Destructive); REGISTER_BITS (_Source_Flag); - REGISTER_CLASS_ENUM (AudioRegion, Linear); - REGISTER_CLASS_ENUM (AudioRegion, Fast); - REGISTER_CLASS_ENUM (AudioRegion, Slow); - REGISTER_CLASS_ENUM (AudioRegion, LogA); - REGISTER_CLASS_ENUM (AudioRegion, LogB); - REGISTER (_AudioRegion_FadeShape); + REGISTER_ENUM (FadeLinear); + REGISTER_ENUM (FadeFast); + REGISTER_ENUM (FadeSlow); + REGISTER_ENUM (FadeConstantPower); + REGISTER_ENUM (FadeSymmetric); + REGISTER (_FadeShape); REGISTER_CLASS_ENUM (Diskstream, Recordable); REGISTER_CLASS_ENUM (Diskstream, Hidden); @@ -413,10 +438,6 @@ setup_enum_writer () REGISTER_CLASS_ENUM (Location, IsRangeMarker); REGISTER_BITS (_Location_Flags); - REGISTER_CLASS_ENUM (Panner, SameDirection); - REGISTER_CLASS_ENUM (Panner, OppositeDirection); - REGISTER (_Panner_LinkDirection); - REGISTER_CLASS_ENUM (Track, NoFreeze); REGISTER_CLASS_ENUM (Track, Frozen); REGISTER_CLASS_ENUM (Track, UnFrozen); @@ -491,6 +512,8 @@ setup_enum_writer () REGISTER (_ExportFormatBase_Quality); REGISTER_CLASS_ENUM (ExportFormatBase, SR_None); + REGISTER_CLASS_ENUM (ExportFormatBase, SR_Session); + REGISTER_CLASS_ENUM (ExportFormatBase, SR_8); REGISTER_CLASS_ENUM (ExportFormatBase, SR_22_05); REGISTER_CLASS_ENUM (ExportFormatBase, SR_44_1); REGISTER_CLASS_ENUM (ExportFormatBase, SR_48); @@ -510,9 +533,14 @@ setup_enum_writer () REGISTER_CLASS_ENUM (ExportProfileManager, BBT); REGISTER_CLASS_ENUM (ExportProfileManager, MinSec); REGISTER_CLASS_ENUM (ExportProfileManager, Frames); - REGISTER_CLASS_ENUM (ExportProfileManager, Off); REGISTER (_ExportProfileManager_TimeFormat); + REGISTER_CLASS_ENUM (RegionExportChannelFactory, None); + REGISTER_CLASS_ENUM (RegionExportChannelFactory, Raw); + REGISTER_CLASS_ENUM (RegionExportChannelFactory, Fades); + REGISTER_CLASS_ENUM (RegionExportChannelFactory, Processed); + REGISTER (_RegionExportChannelFactory_Type); + REGISTER_CLASS_ENUM (Delivery, Insert); REGISTER_CLASS_ENUM (Delivery, Send); REGISTER_CLASS_ENUM (Delivery, Listen); @@ -530,12 +558,20 @@ setup_enum_writer () REGISTER_CLASS_ENUM (IO, Output); REGISTER (_IO_Direction); - REGISTER_CLASS_ENUM (MidiModel::DiffCommand, NoteNumber); - REGISTER_CLASS_ENUM (MidiModel::DiffCommand, Channel); - REGISTER_CLASS_ENUM (MidiModel::DiffCommand, Velocity); - REGISTER_CLASS_ENUM (MidiModel::DiffCommand, StartTime); - REGISTER_CLASS_ENUM (MidiModel::DiffCommand, Length); - REGISTER (_MidiModel_DiffCommand_Property); + 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); @@ -545,254 +581,302 @@ setup_enum_writer () REGISTER_ENUM(Rectified); REGISTER(_WaveformShape); - REGISTER_ENUM(Plain); - REGISTER_ENUM(Legato); - REGISTER_ENUM(Groove); - REGISTER(_QuantizeType); - REGISTER_ENUM(AudioTime); REGISTER_ENUM(MusicTime); REGISTER(_PositionLockStyle); + + REGISTER_ENUM (Evoral::OverlapNone); + REGISTER_ENUM (Evoral::OverlapInternal); + REGISTER_ENUM (Evoral::OverlapStart); + 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::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::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::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::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::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::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::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::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::istream& operator>>(std::istream& o, PFLPosition& var) { std::string s; o >> s; - var = (RemoteModel) string_2_enum (s, var); + var = (PFLPosition) string_2_enum (s, var); return o; } -std::ostream& operator<<(std::ostream& o, const RemoteModel& var) +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, EditMode& var) -{ + +std::istream& operator>>(std::istream& o, AFLPosition& var) +{ std::string s; o >> s; - var = (EditMode) string_2_enum (s, var); + var = (AFLPosition) string_2_enum (s, var); return o; } -std::ostream& operator<<(std::ostream& o, const EditMode& var) -{ +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, ListenPosition& var) -{ + +std::istream& operator>>(std::istream& o, RemoteModel& var) +{ std::string s; o >> s; - var = (ListenPosition) string_2_enum (s, var); + var = (RemoteModel) string_2_enum (s, var); return o; } -std::ostream& operator<<(std::ostream& o, const ListenPosition& var) -{ +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, LayerModel& var) -{ +std::istream& operator>>(std::istream& o, EditMode& var) +{ std::string s; o >> s; - var = (LayerModel) string_2_enum (s, var); + var = (EditMode) string_2_enum (s, var); return o; } -std::ostream& operator<<(std::ostream& o, const LayerModel& var) -{ +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::istream& operator>>(std::istream& o, InsertMergePolicy& var) -{ +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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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; }