Fix MidiBuffer::merge_in_place and add aggressive correctness checking.
[ardour.git] / libs / ardour / enums.cc
index 350c6dba9ada4e2fd941cb2f8ddae4ccc77ea1f7..1ca26f8faef7b1fbdb08f9e6e726005d0bdd4125 100644 (file)
 
 */
 
-#include <pbd/enumwriter.h>
-
-#include <ardour/types.h>
-#include <ardour/session.h>
-#include <ardour/location.h>
-#include <ardour/audiofilesource.h>
-#include <ardour/diskstream.h>
-#include <ardour/audioregion.h>
-#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>
+#include "pbd/enumwriter.h"
+
+#include "ardour/audiofilesource.h"
+#include "ardour/audioregion.h"
+#include "ardour/delivery.h"
+#include "ardour/diskstream.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/track.h"
+#include "ardour/types.h"
 
 using namespace std;
 using namespace PBD;
@@ -50,6 +54,7 @@ setup_enum_writer ()
        TrackMode _TrackMode;
        NoteMode _NoteMode;
        ChannelMode _ChannelMode;
+       ColorMode _ColorMode;
        MeterFalloff _MeterFalloff;
        MeterHold _MeterHold;
        EditMode _EditMode;
@@ -60,7 +65,7 @@ setup_enum_writer ()
        DenormalModel _DenormalModel;
        CrossfadeModel _CrossfadeModel;
        LayerModel _LayerModel;
-       SoloModel _SoloModel;
+       ListenPosition _ListenPosition;
        SampleFormat _SampleFormat;
        CDMarkerFormat _CDMarkerFormat;
        HeaderFormat _HeaderFormat;
@@ -68,7 +73,6 @@ setup_enum_writer ()
        SlaveSource _SlaveSource;
        ShuttleBehaviour _ShuttleBehaviour;
        ShuttleUnits _ShuttleUnits;
-       mute_type _mute_type;
        Session::RecordState _Session_RecordState;
        Session::Event::Type _Session_Event_Type;
        SmpteFormat _Session_SmpteFormat;
@@ -82,10 +86,11 @@ setup_enum_writer ()
        AutoConnectOption _AutoConnectOption;
        Session::StateOfTheState _Session_StateOfTheState;
        Route::Flag _Route_Flag;
-       AudioFileSource::Flag _AudioFileSource_Flag;
+       Source::Flag _Source_Flag;
        Diskstream::Flag _Diskstream_Flag;
        Location::Flags _Location_Flags;
        RouteGroup::Flag _RouteGroup_Flag;
+       RouteGroup::Property _RouteGroup_Property;
        Region::Flag _Region_Flag;
        Region::PositionLockStyle _Region_PositionLockStyle;
        Track::FreezeState _Track_FreezeState;
@@ -102,6 +107,10 @@ setup_enum_writer ()
        ExportFormatBase::SampleRate _ExportFormatBase_SampleRate;
        ExportFormatBase::SRCQuality _ExportFormatBase_SRCQuality;
        ExportProfileManager::TimeFormat _ExportProfileManager_TimeFormat;
+       Delivery::Role _Delivery_Role;
+       IO::Direction _IO_Direction;
+       MuteMaster::MutePoint _MuteMaster_MutePoint;
+       MidiModel::DiffCommand::Property _MidiModel_DiffCommand_Property;
 
 #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()
@@ -151,6 +160,7 @@ setup_enum_writer ()
        REGISTER (_MeterPoint);
 
        REGISTER_ENUM (Normal);
+       REGISTER_ENUM (NonLayered);
        REGISTER_ENUM (Destructive);
        REGISTER (_TrackMode);
 
@@ -163,6 +173,11 @@ setup_enum_writer ()
        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);
@@ -216,9 +231,9 @@ setup_enum_writer ()
        REGISTER_ENUM (AddHigher);
        REGISTER (_LayerModel);
 
-       REGISTER_ENUM (InverseMute);
-       REGISTER_ENUM (SoloBus);
-       REGISTER (_SoloModel);
+       REGISTER_ENUM (AfterFaderListen);
+       REGISTER_ENUM (PreFaderListen);
+       REGISTER (_ListenPosition);
 
        REGISTER_ENUM (AutoConnectPhysical);
        REGISTER_ENUM (AutoConnectMaster);
@@ -319,26 +334,20 @@ setup_enum_writer ()
        REGISTER_CLASS_ENUM (Session, pullup_Minus4Minus1);
        REGISTER (_Session_PullupFormat);
 
-       REGISTER_ENUM (PRE_FADER);
-       REGISTER_ENUM (POST_FADER);
-       REGISTER_ENUM (CONTROL_OUTS);
-       REGISTER_ENUM (MAIN_OUTS);
-       REGISTER (_mute_type);
-
        REGISTER_CLASS_ENUM (Route, Hidden);
        REGISTER_CLASS_ENUM (Route, MasterOut);
        REGISTER_CLASS_ENUM (Route, ControlOut);
        REGISTER_BITS (_Route_Flag);
 
-       REGISTER_CLASS_ENUM (AudioFileSource, Writable);
-       REGISTER_CLASS_ENUM (AudioFileSource, CanRename);
-       REGISTER_CLASS_ENUM (AudioFileSource, Broadcast);
-       REGISTER_CLASS_ENUM (AudioFileSource, Removable);
-       REGISTER_CLASS_ENUM (AudioFileSource, RemovableIfEmpty);
-       REGISTER_CLASS_ENUM (AudioFileSource, RemoveAtDestroy);
-       REGISTER_CLASS_ENUM (AudioFileSource, NoPeakFile);
-       REGISTER_CLASS_ENUM (AudioFileSource, Destructive);
-       REGISTER_BITS (_AudioFileSource_Flag);
+       REGISTER_CLASS_ENUM (Source, Writable);
+       REGISTER_CLASS_ENUM (Source, CanRename);
+       REGISTER_CLASS_ENUM (Source, Broadcast);
+       REGISTER_CLASS_ENUM (Source, Removable);
+       REGISTER_CLASS_ENUM (Source, RemovableIfEmpty);
+       REGISTER_CLASS_ENUM (Source, RemoveAtDestroy);
+       REGISTER_CLASS_ENUM (Source, NoPeakFile);
+       REGISTER_CLASS_ENUM (Source, Destructive);
+       REGISTER_BITS (_Source_Flag);
 
        REGISTER_CLASS_ENUM (AudioRegion, Linear);
        REGISTER_CLASS_ENUM (AudioRegion, Fast);
@@ -362,12 +371,19 @@ setup_enum_writer ()
        REGISTER_CLASS_ENUM (Location, IsStart);
        REGISTER_BITS (_Location_Flags);
 
-
        REGISTER_CLASS_ENUM (RouteGroup, Relative);
        REGISTER_CLASS_ENUM (RouteGroup, Active);
        REGISTER_CLASS_ENUM (RouteGroup, Hidden);
        REGISTER_BITS (_RouteGroup_Flag);
 
+       REGISTER_CLASS_ENUM (RouteGroup, Gain);
+       REGISTER_CLASS_ENUM (RouteGroup, Mute);
+       REGISTER_CLASS_ENUM (RouteGroup, Solo);
+       REGISTER_CLASS_ENUM (RouteGroup, RecEnable);
+       REGISTER_CLASS_ENUM (RouteGroup, Select);
+       REGISTER_CLASS_ENUM (RouteGroup, Edit);
+       REGISTER_BITS (_RouteGroup_Property);
+
        REGISTER_CLASS_ENUM (Panner, SameDirection);
        REGISTER_CLASS_ENUM (Panner, OppositeDirection);
        REGISTER (_Panner_LinkDirection);
@@ -390,7 +406,7 @@ setup_enum_writer ()
        REGISTER_CLASS_ENUM (Region, LeftOfSplit);
        REGISTER_CLASS_ENUM (Region, RightOfSplit);
        REGISTER_CLASS_ENUM (Region, Hidden);
-       REGISTER_CLASS_ENUM (Region, DoNotSaveState);
+       REGISTER_CLASS_ENUM (Region, DoNotSendPropertyChanges);
        REGISTER_BITS (_Region_Flag);
 
        REGISTER_CLASS_ENUM (Region, AudioTime);
@@ -492,4 +508,27 @@ setup_enum_writer ()
        REGISTER_CLASS_ENUM (ExportProfileManager, Frames);
        REGISTER_CLASS_ENUM (ExportProfileManager, Off);
        REGISTER (_ExportProfileManager_TimeFormat);
+
+       REGISTER_CLASS_ENUM (Delivery, Insert);
+       REGISTER_CLASS_ENUM (Delivery, Send);
+       REGISTER_CLASS_ENUM (Delivery, Listen);
+       REGISTER_CLASS_ENUM (Delivery, Main);
+       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::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);
 }