Templateify MidiBuffer iterators (avoid code duplication since they're about to get...
[ardour.git] / libs / ardour / enums.cc
index 4220adf7eb2242d9453e58cee85b82685adaa4ba..0c307d060565239caeb1b0d12bc07bcfa19f61ba 100644 (file)
@@ -1,3 +1,22 @@
+/*
+    Copyright (C) 2000-2007 Paul Davis
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
 #include <pbd/enumwriter.h>
 
 #include <ardour/types.h>
@@ -9,6 +28,10 @@
 #include <ardour/route_group.h>
 #include <ardour/panner.h>
 #include <ardour/track.h>
+#include <ardour/midi_track.h>
+#include <ardour/export_filename.h>
+#include <ardour/export_format_base.h>
+#include <ardour/export_profile_manager.h>
 
 using namespace std;
 using namespace PBD;
@@ -25,6 +48,9 @@ setup_enum_writer ()
        AlignStyle _AlignStyle;
        MeterPoint _MeterPoint;
        TrackMode _TrackMode;
+       NoteMode _NoteMode;
+       ChannelMode _ChannelMode;
+       ColorMode _ColorMode;
        MeterFalloff _MeterFalloff;
        MeterHold _MeterHold;
        EditMode _EditMode;
@@ -32,10 +58,12 @@ setup_enum_writer ()
        Placement _Placement;
        MonitorModel _MonitorModel;
        RemoteModel _RemoteModel;
+       DenormalModel _DenormalModel;
        CrossfadeModel _CrossfadeModel;
        LayerModel _LayerModel;
        SoloModel _SoloModel;
        SampleFormat _SampleFormat;
+       CDMarkerFormat _CDMarkerFormat;
        HeaderFormat _HeaderFormat;
        PluginType _PluginType;
        SlaveSource _SlaveSource;
@@ -60,7 +88,21 @@ setup_enum_writer ()
        Location::Flags _Location_Flags;
        RouteGroup::Flag _RouteGroup_Flag;
        Region::Flag _Region_Flag;
+       Region::PositionLockStyle _Region_PositionLockStyle;
        Track::FreezeState _Track_FreezeState;
+       AutomationList::InterpolationStyle _AutomationList_InterpolationStyle;
+       AnyTime::Type _AnyTime_Type;
+       ExportFilename::TimeFormat _ExportFilename_TimeFormat;
+       ExportFilename::DateFormat _ExportFilename_DateFormat;
+       ExportFormatBase::Type _ExportFormatBase_Type;
+       ExportFormatBase::FormatId _ExportFormatBase_FormatId;
+       ExportFormatBase::Endianness _ExportFormatBase_Endianness;
+       ExportFormatBase::SampleFormat _ExportFormatBase_SampleFormat;
+       ExportFormatBase::DitherType _ExportFormatBase_DitherType;
+       ExportFormatBase::Quality _ExportFormatBase_Quality;
+       ExportFormatBase::SampleRate _ExportFormatBase_SampleRate;
+       ExportFormatBase::SRCQuality _ExportFormatBase_SRCQuality;
+       ExportProfileManager::TimeFormat _ExportProfileManager_TimeFormat;
 
 #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()
@@ -78,12 +120,16 @@ setup_enum_writer ()
        REGISTER_ENUM (OverlapEnd);
        REGISTER_ENUM (OverlapExternal);
        REGISTER (_OverlapType);
-       
+
        REGISTER_ENUM (GainAutomation);
        REGISTER_ENUM (PanAutomation);
        REGISTER_ENUM (PluginAutomation);
        REGISTER_ENUM (SoloAutomation);
        REGISTER_ENUM (MuteAutomation);
+       REGISTER_ENUM (MidiCCAutomation);
+       REGISTER_ENUM (FadeInAutomation);
+       REGISTER_ENUM (FadeOutAutomation);
+       REGISTER_ENUM (EnvelopeAutomation);
        REGISTER_BITS (_AutomationType);
 
        REGISTER_ENUM (Off);
@@ -97,18 +143,32 @@ setup_enum_writer ()
        REGISTER_BITS (_AutoStyle);
 
        REGISTER_ENUM (CaptureTime);
-       REGISTER_ENUM (ExistingMaterial);       
+       REGISTER_ENUM (ExistingMaterial);
        REGISTER (_AlignStyle);
 
        REGISTER_ENUM (MeterInput);
        REGISTER_ENUM (MeterPreFader);
-       REGISTER_ENUM (MeterPostFader); 
+       REGISTER_ENUM (MeterPostFader);
        REGISTER (_MeterPoint);
 
        REGISTER_ENUM (Normal);
        REGISTER_ENUM (Destructive);
        REGISTER (_TrackMode);
 
+       REGISTER_ENUM (Sustained);
+       REGISTER_ENUM (Percussive);
+       REGISTER (_NoteMode);
+
+       REGISTER_ENUM (AllChannels);
+       REGISTER_ENUM (FilterChannels);
+       REGISTER_ENUM (ForceChannel);
+       REGISTER (_ChannelMode);
+
+       REGISTER_ENUM (MeterColors);
+       REGISTER_ENUM (ChannelColors);
+       REGISTER_ENUM (TrackColor);
+       REGISTER (_ColorMode);
+       
        REGISTER_ENUM (MeterFalloffOff);
        REGISTER_ENUM (MeterFalloffSlowest);
        REGISTER_ENUM (MeterFalloffSlow);
@@ -117,7 +177,7 @@ setup_enum_writer ()
        REGISTER_ENUM (MeterFalloffFaster);
        REGISTER_ENUM (MeterFalloffFastest);
        REGISTER (_MeterFalloff);
-       
+
        REGISTER_ENUM (MeterHoldOff);
        REGISTER_ENUM (MeterHoldShort);
        REGISTER_ENUM (MeterHoldMedium);
@@ -125,15 +185,14 @@ setup_enum_writer ()
        REGISTER (_MeterHold);
 
        REGISTER_ENUM (Slide);
-       REGISTER_ENUM (Splice); 
+       REGISTER_ENUM (Splice);
        REGISTER (_EditMode);
 
        REGISTER_ENUM (Start);
        REGISTER_ENUM (End);
-       REGISTER_ENUM (SyncPoint);      
+       REGISTER_ENUM (SyncPoint);
        REGISTER (_RegionPoint);
 
-
        REGISTER_ENUM (PreFader);
        REGISTER_ENUM (PostFader);
        REGISTER (_Placement);
@@ -143,6 +202,12 @@ setup_enum_writer ()
        REGISTER_ENUM (ExternalMonitoring);
        REGISTER (_MonitorModel);
 
+       REGISTER_ENUM (DenormalNone);
+       REGISTER_ENUM (DenormalFTZ);
+       REGISTER_ENUM (DenormalDAZ);
+       REGISTER_ENUM (DenormalFTZDAZ);
+       REGISTER (_DenormalModel);
+
        REGISTER_ENUM (UserOrdered);
        REGISTER_ENUM (MixerOrdered);
        REGISTER_ENUM (EditorOrdered);
@@ -154,11 +219,11 @@ setup_enum_writer ()
 
        REGISTER_ENUM (LaterHigher);
        REGISTER_ENUM (MoveAddHigher);
-       REGISTER_ENUM (AddHigher);      
+       REGISTER_ENUM (AddHigher);
        REGISTER (_LayerModel);
 
        REGISTER_ENUM (InverseMute);
-       REGISTER_ENUM (SoloBus);        
+       REGISTER_ENUM (SoloBus);
        REGISTER (_SoloModel);
 
        REGISTER_ENUM (AutoConnectPhysical);
@@ -167,15 +232,21 @@ setup_enum_writer ()
 
        REGISTER_ENUM (FormatFloat);
        REGISTER_ENUM (FormatInt24);
+       REGISTER_ENUM (FormatInt16);
        REGISTER (_SampleFormat);
 
+       REGISTER_ENUM (CDMarkerNone);
+       REGISTER_ENUM (CDMarkerCUE);
+       REGISTER_ENUM (CDMarkerTOC);
+       REGISTER (_CDMarkerFormat);
+
        REGISTER_ENUM (BWF);
        REGISTER_ENUM (WAVE);
        REGISTER_ENUM (WAVE64);
        REGISTER_ENUM (CAF);
        REGISTER_ENUM (AIFF);
        REGISTER_ENUM (iXML);
-       REGISTER_ENUM (RF64);   
+       REGISTER_ENUM (RF64);
        REGISTER (_HeaderFormat);
 
        REGISTER_ENUM (AudioUnit);
@@ -185,15 +256,16 @@ setup_enum_writer ()
 
        REGISTER_ENUM (None);
        REGISTER_ENUM (MTC);
-       REGISTER_ENUM (JACK);   
+       REGISTER_ENUM (JACK);
+       REGISTER_ENUM (MIDIClock);
        REGISTER (_SlaveSource);
 
        REGISTER_ENUM (Sprung);
-       REGISTER_ENUM (Wheel);  
+       REGISTER_ENUM (Wheel);
        REGISTER (_ShuttleBehaviour);
 
        REGISTER_ENUM (Percentage);
-       REGISTER_ENUM (Semitones);      
+       REGISTER_ENUM (Semitones);
        REGISTER (_ShuttleUnits);
 
        REGISTER_CLASS_ENUM (Session, Disabled);
@@ -205,6 +277,7 @@ setup_enum_writer ()
        REGISTER_CLASS_ENUM (Session::Event, SetDiskstreamSpeed);
        REGISTER_CLASS_ENUM (Session::Event, Locate);
        REGISTER_CLASS_ENUM (Session::Event, LocateRoll);
+       REGISTER_CLASS_ENUM (Session::Event, LocateRollLocate);
        REGISTER_CLASS_ENUM (Session::Event, SetLoop);
        REGISTER_CLASS_ENUM (Session::Event, PunchIn);
        REGISTER_CLASS_ENUM (Session::Event, PunchOut);
@@ -311,6 +384,7 @@ setup_enum_writer ()
        REGISTER_CLASS_ENUM (Region, DefaultFadeIn);
        REGISTER_CLASS_ENUM (Region, DefaultFadeOut);
        REGISTER_CLASS_ENUM (Region, Locked);
+       REGISTER_CLASS_ENUM (Region, PositionLocked);
        REGISTER_CLASS_ENUM (Region, Automatic);
        REGISTER_CLASS_ENUM (Region, WholeFile);
        REGISTER_CLASS_ENUM (Region, FadeIn);
@@ -325,9 +399,103 @@ setup_enum_writer ()
        REGISTER_CLASS_ENUM (Region, DoNotSaveState);
        REGISTER_BITS (_Region_Flag);
 
+       REGISTER_CLASS_ENUM (Region, AudioTime);
+       REGISTER_CLASS_ENUM (Region, MusicTime);
+       REGISTER_BITS (_Region_PositionLockStyle);
+
        REGISTER_CLASS_ENUM (Track, NoFreeze);
        REGISTER_CLASS_ENUM (Track, Frozen);
        REGISTER_CLASS_ENUM (Track, UnFrozen);
        REGISTER (_Track_FreezeState);
-       
+
+       REGISTER_CLASS_ENUM (AutomationList, Discrete);
+       REGISTER_CLASS_ENUM (AutomationList, Linear);
+       REGISTER_CLASS_ENUM (AutomationList, Curved);
+       REGISTER (_AutomationList_InterpolationStyle);
+
+       REGISTER_CLASS_ENUM (AnyTime, SMPTE);
+       REGISTER_CLASS_ENUM (AnyTime, BBT);
+       REGISTER_CLASS_ENUM (AnyTime, Frames);
+       REGISTER_CLASS_ENUM (AnyTime, Seconds);
+       REGISTER (_AnyTime_Type);
+
+       REGISTER_CLASS_ENUM (ExportFilename, D_None);
+       REGISTER_CLASS_ENUM (ExportFilename, D_ISO);
+       REGISTER_CLASS_ENUM (ExportFilename, D_ISOShortY);
+       REGISTER_CLASS_ENUM (ExportFilename, D_BE);
+       REGISTER_CLASS_ENUM (ExportFilename, D_BEShortY);
+       REGISTER (_ExportFilename_DateFormat);
+
+       REGISTER_CLASS_ENUM (ExportFilename, T_None);
+       REGISTER_CLASS_ENUM (ExportFilename, T_NoDelim);
+       REGISTER_CLASS_ENUM (ExportFilename, T_Delim);
+       REGISTER (_ExportFilename_TimeFormat);
+
+       REGISTER_CLASS_ENUM (ExportFormatBase, T_None);
+       REGISTER_CLASS_ENUM (ExportFormatBase, T_Sndfile);
+       REGISTER (_ExportFormatBase_Type);
+
+       REGISTER_CLASS_ENUM (ExportFormatBase, F_None);
+       REGISTER_CLASS_ENUM (ExportFormatBase, F_WAV);
+       REGISTER_CLASS_ENUM (ExportFormatBase, F_W64);
+       REGISTER_CLASS_ENUM (ExportFormatBase, F_AIFF);
+       REGISTER_CLASS_ENUM (ExportFormatBase, F_AU);
+       REGISTER_CLASS_ENUM (ExportFormatBase, F_IRCAM);
+       REGISTER_CLASS_ENUM (ExportFormatBase, F_RAW);
+       REGISTER_CLASS_ENUM (ExportFormatBase, F_FLAC);
+       REGISTER_CLASS_ENUM (ExportFormatBase, F_Ogg);
+       REGISTER (_ExportFormatBase_FormatId);
+
+       REGISTER_CLASS_ENUM (ExportFormatBase, E_FileDefault);
+       REGISTER_CLASS_ENUM (ExportFormatBase, E_Little);
+       REGISTER_CLASS_ENUM (ExportFormatBase, E_Big);
+       REGISTER_CLASS_ENUM (ExportFormatBase, E_Cpu);
+       REGISTER (_ExportFormatBase_Endianness);
+
+       REGISTER_CLASS_ENUM (ExportFormatBase, SF_None);
+       REGISTER_CLASS_ENUM (ExportFormatBase, SF_8);
+       REGISTER_CLASS_ENUM (ExportFormatBase, SF_16);
+       REGISTER_CLASS_ENUM (ExportFormatBase, SF_24);
+       REGISTER_CLASS_ENUM (ExportFormatBase, SF_32);
+       REGISTER_CLASS_ENUM (ExportFormatBase, SF_U8);
+       REGISTER_CLASS_ENUM (ExportFormatBase, SF_Float);
+       REGISTER_CLASS_ENUM (ExportFormatBase, SF_Double);
+       REGISTER_CLASS_ENUM (ExportFormatBase, SF_Vorbis);
+       REGISTER (_ExportFormatBase_SampleFormat);
+
+       REGISTER_CLASS_ENUM (ExportFormatBase, D_None);
+       REGISTER_CLASS_ENUM (ExportFormatBase, D_Rect);
+       REGISTER_CLASS_ENUM (ExportFormatBase, D_Tri);
+       REGISTER_CLASS_ENUM (ExportFormatBase, D_Shaped);
+       REGISTER (_ExportFormatBase_DitherType);
+
+       REGISTER_CLASS_ENUM (ExportFormatBase, Q_None);
+       REGISTER_CLASS_ENUM (ExportFormatBase, Q_Any);
+       REGISTER_CLASS_ENUM (ExportFormatBase, Q_LosslessLinear);
+       REGISTER_CLASS_ENUM (ExportFormatBase, Q_LosslessCompression);
+       REGISTER_CLASS_ENUM (ExportFormatBase, Q_LossyCompression);
+       REGISTER (_ExportFormatBase_Quality);
+
+       REGISTER_CLASS_ENUM (ExportFormatBase, SR_None);
+       REGISTER_CLASS_ENUM (ExportFormatBase, SR_22_05);
+       REGISTER_CLASS_ENUM (ExportFormatBase, SR_44_1);
+       REGISTER_CLASS_ENUM (ExportFormatBase, SR_48);
+       REGISTER_CLASS_ENUM (ExportFormatBase, SR_88_2);
+       REGISTER_CLASS_ENUM (ExportFormatBase, SR_96);
+       REGISTER_CLASS_ENUM (ExportFormatBase, SR_192);
+       REGISTER (_ExportFormatBase_SampleRate);
+
+       REGISTER_CLASS_ENUM (ExportFormatBase, SRC_SincBest);
+       REGISTER_CLASS_ENUM (ExportFormatBase, SRC_SincMedium);
+       REGISTER_CLASS_ENUM (ExportFormatBase, SRC_SincFast);
+       REGISTER_CLASS_ENUM (ExportFormatBase, SRC_ZeroOrderHold);
+       REGISTER_CLASS_ENUM (ExportFormatBase, SRC_Linear);
+       REGISTER (_ExportFormatBase_SRCQuality);
+
+       REGISTER_CLASS_ENUM (ExportProfileManager, SMPTE);
+       REGISTER_CLASS_ENUM (ExportProfileManager, BBT);
+       REGISTER_CLASS_ENUM (ExportProfileManager, MinSec);
+       REGISTER_CLASS_ENUM (ExportProfileManager, Frames);
+       REGISTER_CLASS_ENUM (ExportProfileManager, Off);
+       REGISTER (_ExportProfileManager_TimeFormat);
 }