Support thread-safe LV2 state restoration
[ardour.git] / libs / ardour / ardour / export_timespan.h
index ba31fd6f6a33b465623da71769def7ae203518db..d4631cbccc00731ba634191673c9ac94c5fc6874 100644 (file)
 #ifndef __ardour_export_timespan_h__
 #define __ardour_export_timespan_h__
 
-#include <map>
-#include <list>
 #include <string>
 
-#include "ardour/export_status.h"
-#include "ardour/export_channel.h"
-#include "ardour/ardour.h"
+#include <boost/shared_ptr.hpp>
+
+#include "ardour/libardour_visibility.h"
+#include "ardour/types.h"
 
 namespace ARDOUR
 {
 
+class ExportStatus;
 class ExportChannel;
 class ExportTempFile;
 
-class ExportTimespan
+class LIBARDOUR_API ExportTimespan
 {
   private:
        typedef boost::shared_ptr<ExportStatus> ExportStatusPtr;
@@ -53,11 +53,21 @@ class ExportTimespan
        std::string range_id () const { return _range_id; }
        void set_range_id (std::string range_id) { _range_id = range_id; }
 
+       bool realtime () const { return _realtime; }
+       void set_realtime (bool rt) { _realtime = rt; }
+
        void set_range (framepos_t start, framepos_t end);
        framecnt_t get_length () const { return end_frame - start_frame; }
        framepos_t get_start () const { return start_frame; }
        framepos_t get_end () const { return end_frame; }
 
+       /// Primarily compare start time, then end time
+       bool operator< (ExportTimespan const & other) {
+               if (start_frame < other.start_frame) { return true; }
+               if (start_frame > other.start_frame) { return false; }
+               return end_frame < other.end_frame;
+       }
+
   private:
 
        ExportStatusPtr status;
@@ -69,6 +79,7 @@ class ExportTimespan
 
        std::string _name;
        std::string _range_id;
+       bool        _realtime;
 
 };