diff options
author | Sakari Bergen <sakari.bergen@beatwaves.net> | 2011-06-11 14:14:24 +0000 |
---|---|---|
committer | Sakari Bergen <sakari.bergen@beatwaves.net> | 2011-06-11 14:14:24 +0000 |
commit | 7468fdb9ca9892cec9b298690bf0edf3655d6453 (patch) | |
tree | abff397fae4e6f8c0f51a7ae71c097b6f0ad2271 /libs | |
parent | 47e2b9db77ff88b0b15f942e751e56322a2887e6 (diff) |
Typedef all globally used export smart pointer types in one file.
Some of them need to be ordered in STL containers, and thus need
a special comparable wrapper for boost::shared_ptr, defined in
comparable_shared_ptr.h. This also alleviates the typedef hell
present earlier in some export classes :)
Making the timespan pointer comparable should fix bug #4093
git-svn-id: svn://localhost/ardour2/branches/3.0@9702 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/ardour/comparable_shared_ptr.h | 56 | ||||
-rw-r--r-- | libs/ardour/ardour/export_channel.h | 14 | ||||
-rw-r--r-- | libs/ardour/ardour/export_filename.h | 23 | ||||
-rw-r--r-- | libs/ardour/ardour/export_format_manager.h | 36 | ||||
-rw-r--r-- | libs/ardour/ardour/export_graph_builder.h | 3 | ||||
-rw-r--r-- | libs/ardour/ardour/export_handler.h | 68 | ||||
-rw-r--r-- | libs/ardour/ardour/export_pointers.h | 66 | ||||
-rw-r--r-- | libs/ardour/ardour/export_profile_manager.h | 58 | ||||
-rw-r--r-- | libs/ardour/ardour/export_timespan.h | 7 | ||||
-rw-r--r-- | libs/ardour/ardour/types.h | 1 | ||||
-rw-r--r-- | libs/ardour/export_filename.cc | 2 | ||||
-rw-r--r-- | libs/ardour/export_format_manager.cc | 46 | ||||
-rw-r--r-- | libs/ardour/export_format_specification.cc | 2 | ||||
-rw-r--r-- | libs/ardour/export_graph_builder.cc | 2 | ||||
-rw-r--r-- | libs/ardour/export_handler.cc | 41 | ||||
-rw-r--r-- | libs/ardour/export_profile_manager.cc | 44 |
16 files changed, 284 insertions, 185 deletions
diff --git a/libs/ardour/ardour/comparable_shared_ptr.h b/libs/ardour/ardour/comparable_shared_ptr.h new file mode 100644 index 0000000000..5ff19af419 --- /dev/null +++ b/libs/ardour/ardour/comparable_shared_ptr.h @@ -0,0 +1,56 @@ +/* + Copyright (C) 2011 Paul Davis + Author: Sakari Bergen + + 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. + +*/ + +#ifndef __ardour_comparable_shared_ptr_h__ +#define __ardour_comparable_shared_ptr_h__ + +namespace ARDOUR { + +template<typename T> +class ComparableSharedPtr : public boost::shared_ptr<T> + , public boost::less_than_comparable<ComparableSharedPtr<T> > +{ + public: + ComparableSharedPtr () {} + template<class Y> + explicit ComparableSharedPtr (Y * p) : boost::shared_ptr<T> (p) {} + + template<class Y, class D> + ComparableSharedPtr (Y * p, D d) : boost::shared_ptr<T> (p, d) {} + + template<class Y, class D, class A> + ComparableSharedPtr (Y * p, D d, A a) : boost::shared_ptr<T> (p, d, a) {} + + ComparableSharedPtr (ComparableSharedPtr const & r) : boost::shared_ptr<T> (r) {} + + template<class Y> + ComparableSharedPtr(ComparableSharedPtr<Y> const & r) : boost::shared_ptr<T> (r) {} + + template<class Y> + ComparableSharedPtr(ComparableSharedPtr<Y> const & r, T * p) : boost::shared_ptr<T> (r, p) {} + + template<class Y> + bool operator< (ComparableSharedPtr<Y> const & other) const { return **this < *other; } +}; + + +} // namespace ARDOUR + +#endif // __ardour_comparable_shared_ptr_h__ diff --git a/libs/ardour/ardour/export_channel.h b/libs/ardour/ardour/export_channel.h index cbb894c66a..1a71f14c3c 100644 --- a/libs/ardour/ardour/export_channel.h +++ b/libs/ardour/ardour/export_channel.h @@ -26,11 +26,11 @@ #include <boost/signals2.hpp> #include <boost/shared_ptr.hpp> #include <boost/scoped_array.hpp> -#include <boost/operators.hpp> #include "pbd/signals.h" #include "ardour/buffer_set.h" +#include "ardour/export_pointers.h" namespace ARDOUR { @@ -62,17 +62,6 @@ class ExportChannel : public boost::less_than_comparable<ExportChannel> virtual bool operator< (ExportChannel const & other) const = 0; }; -/// Safe pointer for storing ExportChannels in ordered STL containers -class ExportChannelPtr : public boost::shared_ptr<ExportChannel> - , public boost::less_than_comparable<ExportChannel> -{ - public: - ExportChannelPtr () {} - template<typename Y> explicit ExportChannelPtr (Y * ptr) : boost::shared_ptr<ExportChannel> (ptr) {} - - bool operator< (ExportChannelPtr const & other) const { return **this < *other; } -}; - /// Basic export channel that reads from AudioPorts class PortExportChannel : public ExportChannel { @@ -99,6 +88,7 @@ class PortExportChannel : public ExportChannel framecnt_t buffer_size; }; + /// Handles RegionExportChannels and does actual reading from region class RegionExportChannelFactory { diff --git a/libs/ardour/ardour/export_filename.h b/libs/ardour/ardour/export_filename.h index d046b9a501..b5f0bde234 100644 --- a/libs/ardour/ardour/export_filename.h +++ b/libs/ardour/ardour/export_filename.h @@ -22,24 +22,19 @@ #define __ardour_export_filename_h__ #include <boost/shared_ptr.hpp> + #include <string> + +#include <ardour/export_pointers.h> + #include "pbd/statefuldestructible.h" namespace ARDOUR { class Session; -class ExportTimespan; -class ExportChannelConfiguration; -class ExportFormatSpecification; class ExportFilename { - private: - - typedef boost::shared_ptr<ExportTimespan> TimespanPtr; - typedef boost::shared_ptr<ExportChannelConfiguration> ChannelConfigPtr; - typedef boost::shared_ptr<ExportFormatSpecification const> FormatPtr; - public: enum DateFormat { @@ -68,7 +63,7 @@ class ExportFilename { /* data access */ - std::string get_path (FormatPtr format) const; + std::string get_path (ExportFormatSpecPtr format) const; std::string get_folder () const { return folder; } TimeFormat get_time_format () const { return time_format; } @@ -88,8 +83,8 @@ class ExportFilename { void set_channel (uint32_t value) { channel = value; } bool set_folder (std::string path); - void set_timespan (TimespanPtr ts) { timespan = ts; } - void set_channel_config (ChannelConfigPtr cc) { channel_config = cc; } + void set_timespan (ExportTimespanPtr ts) { timespan = ts; } + void set_channel_config (ExportChannelConfigPtr cc) { channel_config = cc; } /* public members */ @@ -119,8 +114,8 @@ class ExportFilename { // Due to the static allocation used in strftime(), no destructor or copy-ctor is needed for this struct tm * time_struct; - TimespanPtr timespan; - ChannelConfigPtr channel_config; + ExportTimespanPtr timespan; + ExportChannelConfigPtr channel_config; /* Serialization helpers */ diff --git a/libs/ardour/ardour/export_format_manager.h b/libs/ardour/ardour/export_format_manager.h index f82230b8c3..019a986f35 100644 --- a/libs/ardour/ardour/export_format_manager.h +++ b/libs/ardour/ardour/export_format_manager.h @@ -25,11 +25,11 @@ #include <string> #include <boost/shared_ptr.hpp> -#include <boost/weak_ptr.hpp> #include "pbd/signals.h" #include "ardour/export_formats.h" +#include "ardour/export_pointers.h" namespace ARDOUR { @@ -43,13 +43,8 @@ class ExportFormatManager : public PBD::ScopedConnectionList { public: - typedef boost::shared_ptr<ExportFormatCompatibility> CompatPtr; - typedef boost::weak_ptr<ExportFormatCompatibility> WeakCompatPtr; - typedef std::list<CompatPtr> CompatList; - - typedef boost::shared_ptr<ExportFormat> FormatPtr; - typedef boost::weak_ptr<ExportFormat> WeakFormatPtr; - typedef std::list<FormatPtr> FormatList; + typedef std::list<ExportFormatCompatibilityPtr> CompatList; + typedef std::list<ExportFormatPtr> FormatList; typedef HasSampleFormat::SampleFormatPtr SampleFormatPtr; typedef HasSampleFormat::SampleFormatList SampleFormatList; @@ -58,9 +53,6 @@ class ExportFormatManager : public PBD::ScopedConnectionList typedef HasSampleFormat::DitherTypePtr DitherTypePtr; typedef HasSampleFormat::WeakDitherTypePtr WeakDitherTypePtr; - typedef boost::shared_ptr<ExportFormatSpecification> SpecPtr; - typedef boost::shared_ptr<ExportFormatBase> FormatBasePtr; - /* Quality states */ class QualityState : public ExportFormatBase::SelectableCompatible { @@ -87,7 +79,7 @@ class ExportFormatManager : public PBD::ScopedConnectionList public: - explicit ExportFormatManager (SpecPtr specification); + explicit ExportFormatManager (ExportFormatSpecPtr specification); ~ExportFormatManager (); /* Signals */ @@ -121,16 +113,16 @@ class ExportFormatManager : public PBD::ScopedConnectionList void init_formats (); void init_sample_rates (); - void add_compatibility (CompatPtr ptr); + void add_compatibility (ExportFormatCompatibilityPtr ptr); void add_quality (QualityPtr ptr); - void add_format (FormatPtr ptr); + void add_format (ExportFormatPtr ptr); void add_sample_rate (SampleRatePtr ptr); /* Connected to signals */ - void change_compatibility_selection (bool select, WeakCompatPtr const & compat); + void change_compatibility_selection (bool select, WeakExportFormatCompatibilityPtr const & compat); void change_quality_selection (bool select, WeakQualityPtr const & quality); - void change_format_selection (bool select, WeakFormatPtr const & format); + void change_format_selection (bool select, WeakExportFormatPtr const & format); void change_sample_rate_selection (bool select, WeakSampleRatePtr const & rate); void change_sample_format_selection (bool select, WeakSampleFormatPtr const & format); @@ -138,9 +130,9 @@ class ExportFormatManager : public PBD::ScopedConnectionList /* Do actual selection */ - void select_compatibility (WeakCompatPtr const & compat); + void select_compatibility (WeakExportFormatCompatibilityPtr const & compat); void select_quality (QualityPtr const & quality); - void select_format (FormatPtr const & format); + void select_format (ExportFormatPtr const & format); void select_sample_rate (SampleRatePtr const & rate); void select_sample_format (SampleFormatPtr const & format); @@ -152,15 +144,15 @@ class ExportFormatManager : public PBD::ScopedConnectionList /* Formats and compatibilities */ QualityPtr get_selected_quality (); - FormatPtr get_selected_format (); + ExportFormatPtr get_selected_format (); SampleRatePtr get_selected_sample_rate (); SampleFormatPtr get_selected_sample_format (); - FormatBasePtr get_compatibility_intersection (); + ExportFormatBasePtr get_compatibility_intersection (); - FormatBasePtr universal_set; - SpecPtr current_selection; + ExportFormatBasePtr universal_set; + ExportFormatSpecPtr current_selection; CompatList compatibilities; QualityList qualities; diff --git a/libs/ardour/ardour/export_graph_builder.h b/libs/ardour/ardour/export_graph_builder.h index 444f1ae659..bce6838d02 100644 --- a/libs/ardour/ardour/export_graph_builder.h +++ b/libs/ardour/ardour/export_graph_builder.h @@ -51,7 +51,6 @@ class ExportGraphBuilder { private: typedef ExportHandler::FileSpec FileSpec; - typedef ExportElementFactory::FilenamePtr FilenamePtr; typedef boost::shared_ptr<AudioGrapher::Sink<Sample> > FloatSinkPtr; typedef boost::shared_ptr<AudioGrapher::IdentityVertex<Sample> > IdentityVertexPtr; @@ -90,7 +89,7 @@ class ExportGraphBuilder void copy_files (std::string orig_path); FileSpec config; - std::list<FilenamePtr> filenames; + std::list<ExportFilenamePtr> filenames; PBD::ScopedConnection copy_files_connection; // Only one of these should be available at a time diff --git a/libs/ardour/ardour/export_handler.h b/libs/ardour/ardour/export_handler.h index ab78899a17..79a90ebb6f 100644 --- a/libs/ardour/ardour/export_handler.h +++ b/libs/ardour/ardour/export_handler.h @@ -25,9 +25,11 @@ #include <list> #include <fstream> +#include <boost/operators.hpp> #include <boost/shared_ptr.hpp> #include "ardour/ardour.h" +#include "ardour/export_pointers.h" #include "ardour/session.h" #include "ardour/types.h" @@ -48,26 +50,20 @@ class ExportGraphBuilder; class ExportElementFactory { public: - typedef boost::shared_ptr<ExportTimespan> TimespanPtr; - typedef boost::shared_ptr<ExportChannelConfiguration> ChannelConfigPtr; - typedef boost::shared_ptr<ExportFormatSpecification> FormatPtr; - typedef boost::shared_ptr<ExportFilename> FilenamePtr; - - public: ExportElementFactory (Session & session); ~ExportElementFactory (); - TimespanPtr add_timespan (); + ExportTimespanPtr add_timespan (); - ChannelConfigPtr add_channel_config (); + ExportChannelConfigPtr add_channel_config (); - FormatPtr add_format (); - FormatPtr add_format (XMLNode const & state); - FormatPtr add_format_copy (FormatPtr other); + ExportFormatSpecPtr add_format (); + ExportFormatSpecPtr add_format (XMLNode const & state); + ExportFormatSpecPtr add_format_copy (ExportFormatSpecPtr other); - FilenamePtr add_filename (); - FilenamePtr add_filename_copy (FilenamePtr other); + ExportFilenamePtr add_filename (); + ExportFilenamePtr add_filename_copy (ExportFilenamePtr other); private: Session & session; @@ -78,17 +74,18 @@ class ExportHandler : public ExportElementFactory public: struct FileSpec { FileSpec() {} - FileSpec (ChannelConfigPtr channel_config, FormatPtr format, FilenamePtr filename, boost::shared_ptr<AudioGrapher::BroadcastInfo> broadcast_info) + FileSpec (ExportChannelConfigPtr channel_config, ExportFormatSpecPtr format, + ExportFilenamePtr filename, BroadcastInfoPtr broadcast_info) : channel_config (channel_config) , format (format) , filename (filename) , broadcast_info (broadcast_info) {} - ChannelConfigPtr channel_config; - FormatPtr format; - FilenamePtr filename; - boost::shared_ptr<AudioGrapher::BroadcastInfo> broadcast_info; + ExportChannelConfigPtr channel_config; + ExportFormatSpecPtr format; + ExportFilenamePtr filename; + BroadcastInfoPtr broadcast_info; }; private: @@ -97,11 +94,10 @@ class ExportHandler : public ExportElementFactory * The multimap maps timespans to file specifications */ - typedef std::pair<TimespanPtr, FileSpec> ConfigPair; - typedef std::multimap<TimespanPtr, FileSpec> ConfigMap; + typedef std::pair<ExportTimespanPtr, FileSpec> ConfigPair; + typedef std::multimap<ExportTimespanPtr, FileSpec> ConfigMap; typedef boost::shared_ptr<ExportGraphBuilder> GraphBuilderPtr; - typedef boost::shared_ptr<ExportStatus> StatusPtr; private: /* Session::get_export_handler() should be used to obtain an export handler @@ -114,7 +110,9 @@ class ExportHandler : public ExportElementFactory public: ~ExportHandler (); - bool add_export_config (TimespanPtr timespan, ChannelConfigPtr channel_config, FormatPtr format, FilenamePtr filename, boost::shared_ptr<AudioGrapher::BroadcastInfo> broadcast_info); + bool add_export_config (ExportTimespanPtr timespan, ExportChannelConfigPtr channel_config, + ExportFormatSpecPtr format, ExportFilenamePtr filename, + BroadcastInfoPtr broadcast_info); void do_export (bool rt = false); private: @@ -123,7 +121,7 @@ class ExportHandler : public ExportElementFactory Session & session; GraphBuilderPtr graph_builder; - StatusPtr export_status; + ExportStatusPtr export_status; ConfigMap config_map; bool realtime; @@ -137,7 +135,7 @@ class ExportHandler : public ExportElementFactory void finish_timespan (); typedef std::pair<ConfigMap::iterator, ConfigMap::iterator> TimespanBounds; - TimespanPtr current_timespan; + ExportTimespanPtr current_timespan; TimespanBounds timespan_bounds; PBD::ScopedConnection process_connection; @@ -146,21 +144,22 @@ class ExportHandler : public ExportElementFactory /* CD Marker stuff */ struct CDMarkerStatus { - CDMarkerStatus (std::string out_file, TimespanPtr timespan, FormatPtr format, std::string filename) : - out (out_file.c_str()), timespan (timespan), format (format), filename (filename), marker(0), - track_number (1), track_position (0), track_duration (0), track_start_frame (0), - index_number (1), index_position (0) + CDMarkerStatus (std::string out_file, ExportTimespanPtr timespan, + ExportFormatSpecPtr format, std::string filename) + : out (out_file.c_str()), timespan (timespan), format (format), filename (filename), marker(0) + , track_number (1), track_position (0), track_duration (0), track_start_frame (0) + , index_number (1), index_position (0) {} /* General info */ std::ofstream out; - TimespanPtr timespan; - FormatPtr format; - std::string filename; - Location * marker; + ExportTimespanPtr timespan; + ExportFormatSpecPtr format; + std::string filename; + Location * marker; /* Track info */ - uint32_t track_number; + uint32_t track_number; framepos_t track_position; framepos_t track_duration; framepos_t track_start_frame; @@ -171,7 +170,8 @@ class ExportHandler : public ExportElementFactory }; - void export_cd_marker_file (TimespanPtr timespan, FormatPtr file_format, std::string filename, CDMarkerFormat format); + void export_cd_marker_file (ExportTimespanPtr timespan, ExportFormatSpecPtr file_format, + std::string filename, CDMarkerFormat format); void write_cue_header (CDMarkerStatus & status); void write_toc_header (CDMarkerStatus & status); diff --git a/libs/ardour/ardour/export_pointers.h b/libs/ardour/ardour/export_pointers.h new file mode 100644 index 0000000000..edd7f91325 --- /dev/null +++ b/libs/ardour/ardour/export_pointers.h @@ -0,0 +1,66 @@ +/* + Copyright (C) 2011 Paul Davis + Author: Sakari Bergen + + 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. + +*/ + +#ifndef __ardour_export_pointers_h__ +#define __ardour_export_pointers_h__ + +#include <boost/operators.hpp> +#include <boost/shared_ptr.hpp> +#include <boost/weak_ptr.hpp> + +#include "ardour/comparable_shared_ptr.h" + +namespace AudioGrapher { + class BroadcastInfo; +} + +namespace ARDOUR { + +class ExportTimespan; +class ExportChannel; +class ExportChannelConfiguration; +class ExportFormat; +class ExportFormatBase; +class ExportFormatSpecification; +class ExportFormatCompatibility; +class ExportFilename; +class ExportStatus; +class ExportPreset; + +typedef ComparableSharedPtr<ExportChannel> ExportChannelPtr; +typedef ComparableSharedPtr<ExportTimespan> ExportTimespanPtr; + +typedef boost::shared_ptr<ExportChannelConfiguration> ExportChannelConfigPtr; +typedef boost::shared_ptr<ExportFormatBase> ExportFormatBasePtr; +typedef boost::shared_ptr<ExportFormat> ExportFormatPtr; +typedef boost::shared_ptr<ExportFormatSpecification> ExportFormatSpecPtr; +typedef boost::shared_ptr<ExportFormatCompatibility> ExportFormatCompatibilityPtr; +typedef boost::shared_ptr<ExportFilename> ExportFilenamePtr; +typedef boost::shared_ptr<ExportStatus> ExportStatusPtr; +typedef boost::shared_ptr<ExportPreset> ExportPresetPtr; + +typedef boost::weak_ptr<ExportFormatCompatibility> WeakExportFormatCompatibilityPtr; +typedef boost::weak_ptr<ExportFormat> WeakExportFormatPtr; + +typedef boost::shared_ptr<AudioGrapher::BroadcastInfo> BroadcastInfoPtr; + +} // namespace ARDOUR + +#endif // __ardour_export_pointers_h__ diff --git a/libs/ardour/ardour/export_profile_manager.h b/libs/ardour/ardour/export_profile_manager.h index fef6f3aad5..c0d2bb1dd8 100644 --- a/libs/ardour/ardour/export_profile_manager.h +++ b/libs/ardour/ardour/export_profile_manager.h @@ -28,7 +28,6 @@ #include <string> #include <boost/shared_ptr.hpp> -#include <boost/weak_ptr.hpp> #include "pbd/uuid.h" #include "pbd/file_utils.h" @@ -37,16 +36,12 @@ #include "ardour/filesystem_paths.h" #include "ardour/location.h" #include "ardour/types.h" +#include "ardour/export_handler.h" namespace ARDOUR { class ExportHandler; -class ExportTimespan; -class ExportChannelConfiguration; -class ExportFormatSpecification; -class ExportFilename; -class ExportPreset; class Location; class Session; @@ -61,13 +56,12 @@ class ExportProfileManager void load_profile (); void prepare_for_export (); - typedef boost::shared_ptr<ExportPreset> PresetPtr; - typedef std::list<PresetPtr> PresetList; + typedef std::list<ExportPresetPtr> PresetList; PresetList const & get_presets () { return preset_list; } - bool load_preset (PresetPtr preset); - PresetPtr new_preset (std::string const & name); - PresetPtr save_preset (std::string const & name); + bool load_preset (ExportPresetPtr preset); + ExportPresetPtr new_preset (std::string const & name); + ExportPresetPtr save_preset (std::string const & name); void remove_preset (); private: @@ -92,9 +86,9 @@ class ExportProfileManager void serialize_global_profile (XMLNode & root); void serialize_local_profile (XMLNode & root); - PresetList preset_list; - PresetPtr current_preset; - FileMap preset_file_map; + PresetList preset_list; + ExportPresetPtr current_preset; + FileMap preset_file_map; std::vector<PBD::sys::path> find_file (std::string const & pattern); @@ -104,8 +98,7 @@ class ExportProfileManager /* Timespans */ public: - typedef boost::shared_ptr<ExportTimespan> TimespanPtr; - typedef std::list<TimespanPtr> TimespanList; + typedef std::list<ExportTimespanPtr> TimespanList; typedef boost::shared_ptr<TimespanList> TimespanListPtr; typedef std::list<Location *> LocationList; @@ -165,12 +158,10 @@ class ExportProfileManager /* Channel Configs */ public: - typedef boost::shared_ptr<ExportChannelConfiguration> ChannelConfigPtr; - struct ChannelConfigState { - ChannelConfigPtr config; + ExportChannelConfigPtr config; - ChannelConfigState (ChannelConfigPtr ptr) : config (ptr) {} + ChannelConfigState (ExportChannelConfigPtr ptr) : config (ptr) {} }; typedef boost::shared_ptr<ChannelConfigState> ChannelConfigStatePtr; typedef std::list<ChannelConfigStatePtr> ChannelConfigStateList; @@ -188,14 +179,13 @@ class ExportProfileManager /* Formats */ public: - typedef boost::shared_ptr<ExportFormatSpecification> FormatPtr; - typedef std::list<FormatPtr> FormatList; + typedef std::list<ExportFormatSpecPtr> FormatList; struct FormatState { boost::shared_ptr<FormatList const> list; - FormatPtr format; + ExportFormatSpecPtr format; - FormatState (boost::shared_ptr<FormatList const> list, FormatPtr format) : + FormatState (boost::shared_ptr<FormatList const> list, ExportFormatSpecPtr format) : list (list), format (format) {} }; typedef boost::shared_ptr<FormatState> FormatStatePtr; @@ -205,9 +195,9 @@ class ExportProfileManager FormatStatePtr duplicate_format_state (FormatStatePtr state); void remove_format_state (FormatStatePtr state); - PBD::sys::path save_format_to_disk (FormatPtr format); - void remove_format_profile (FormatPtr format); - FormatPtr get_new_format (FormatPtr original); + PBD::sys::path save_format_to_disk (ExportFormatSpecPtr format); + void remove_format_profile (ExportFormatSpecPtr format); + ExportFormatSpecPtr get_new_format (ExportFormatSpecPtr original); PBD::Signal0<void> FormatListChanged; @@ -221,7 +211,7 @@ class ExportProfileManager void load_formats (); - FormatPtr load_format (XMLNode & node); + ExportFormatSpecPtr load_format (XMLNode & node); void load_format_from_disk (PBD::sys::path const & path); boost::shared_ptr<FormatList> format_list; @@ -230,12 +220,10 @@ class ExportProfileManager /* Filenames */ public: - typedef boost::shared_ptr<ExportFilename> FilenamePtr; - struct FilenameState { - FilenamePtr filename; + ExportFilenamePtr filename; - FilenameState (FilenamePtr ptr) : filename (ptr) {} + FilenameState (ExportFilenamePtr ptr) : filename (ptr) {} }; typedef boost::shared_ptr<FilenameState> FilenameStatePtr; typedef std::list<FilenameStatePtr> FilenameStateList; @@ -249,7 +237,7 @@ class ExportProfileManager FilenameStateList filenames; bool init_filenames (XMLNodeList nodes); - FilenamePtr load_filename (XMLNode & node); + ExportFilenamePtr load_filename (XMLNode & node); /* Warnings */ public: @@ -268,8 +256,8 @@ class ExportProfileManager FormatStatePtr format_state, FilenameStatePtr filename_state); - bool check_format (FormatPtr format, uint32_t channels); - bool check_sndfile_format (FormatPtr format, unsigned int channels); + bool check_format (ExportFormatSpecPtr format, uint32_t channels); + bool check_sndfile_format (ExportFormatSpecPtr format, unsigned int channels); /* Utilities */ diff --git a/libs/ardour/ardour/export_timespan.h b/libs/ardour/ardour/export_timespan.h index ba31fd6f6a..9273aab6c7 100644 --- a/libs/ardour/ardour/export_timespan.h +++ b/libs/ardour/ardour/export_timespan.h @@ -58,6 +58,13 @@ class ExportTimespan 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; diff --git a/libs/ardour/ardour/types.h b/libs/ardour/ardour/types.h index 26775a8d70..42264cf1cb 100644 --- a/libs/ardour/ardour/types.h +++ b/libs/ardour/ardour/types.h @@ -251,6 +251,7 @@ namespace ARDOUR { case Seconds: return seconds == other.seconds; } + return false; // get rid of warning } bool not_zero() const diff --git a/libs/ardour/export_filename.cc b/libs/ardour/export_filename.cc index 7034600c8a..d5309bd535 100644 --- a/libs/ardour/export_filename.cc +++ b/libs/ardour/export_filename.cc @@ -139,7 +139,7 @@ ExportFilename::set_state (const XMLNode & node) } string -ExportFilename::get_path (FormatPtr format) const +ExportFilename::get_path (ExportFormatSpecPtr format) const { string path = folder; bool filename_empty = true; diff --git a/libs/ardour/export_format_manager.cc b/libs/ardour/export_format_manager.cc index d3e99db7f5..c77e301a23 100644 --- a/libs/ardour/export_format_manager.cc +++ b/libs/ardour/export_format_manager.cc @@ -31,7 +31,7 @@ using std::string; namespace ARDOUR { -ExportFormatManager::ExportFormatManager (SpecPtr specification) : +ExportFormatManager::ExportFormatManager (ExportFormatSpecPtr specification) : pending_selection_change (false), universal_set (new ExportFormatBase ()) { @@ -51,7 +51,7 @@ ExportFormatManager::~ExportFormatManager () void ExportFormatManager::init_compatibilities () { - CompatPtr c_ptr; + ExportFormatCompatibilityPtr c_ptr; c_ptr.reset (new ExportFormatCompatibility (_("CD"))); c_ptr->add_sample_rate (ExportFormatBase::SR_44_1); @@ -115,7 +115,7 @@ ExportFormatManager::init_qualities () void ExportFormatManager::init_formats () { - FormatPtr f_ptr; + ExportFormatPtr f_ptr; ExportFormatLinear * fl_ptr; f_ptr.reset (fl_ptr = new ExportFormatLinear ("AIFF", ExportFormatBase::F_AIFF)); @@ -213,10 +213,12 @@ ExportFormatManager::init_sample_rates () } void -ExportFormatManager::add_compatibility (CompatPtr ptr) +ExportFormatManager::add_compatibility (ExportFormatCompatibilityPtr ptr) { compatibilities.push_back (ptr); - ptr->SelectChanged.connect_same_thread (*this, boost::bind (&ExportFormatManager::change_compatibility_selection, this, _1, WeakCompatPtr (ptr))); + ptr->SelectChanged.connect_same_thread (*this, + boost::bind (&ExportFormatManager::change_compatibility_selection, + this, _1, WeakExportFormatCompatibilityPtr (ptr))); } void @@ -227,10 +229,10 @@ ExportFormatManager::add_quality (QualityPtr ptr) } void -ExportFormatManager::add_format (FormatPtr ptr) +ExportFormatManager::add_format (ExportFormatPtr ptr) { formats.push_back (ptr); - ptr->SelectChanged.connect_same_thread (*this, boost::bind (&ExportFormatManager::change_format_selection, this, _1, WeakFormatPtr (ptr))); + ptr->SelectChanged.connect_same_thread (*this, boost::bind (&ExportFormatManager::change_format_selection, this, _1, WeakExportFormatPtr (ptr))); universal_set = universal_set->get_union (*ptr); /* Encoding options */ @@ -305,14 +307,14 @@ ExportFormatManager::select_tagging (bool tag) } void -ExportFormatManager::change_compatibility_selection (bool select, WeakCompatPtr const & compat) +ExportFormatManager::change_compatibility_selection (bool select, WeakExportFormatCompatibilityPtr const & compat) { bool do_selection_changed = !pending_selection_change; if (!pending_selection_change) { pending_selection_change = true; } - CompatPtr ptr = compat.lock(); + ExportFormatCompatibilityPtr ptr = compat.lock(); if (ptr && select) { select_compatibility (ptr); @@ -341,9 +343,9 @@ ExportFormatManager::change_quality_selection (bool select, WeakQualityPtr const } void -ExportFormatManager::change_format_selection (bool select, WeakFormatPtr const & format) +ExportFormatManager::change_format_selection (bool select, WeakExportFormatPtr const & format) { - FormatPtr ptr = format.lock(); + ExportFormatPtr ptr = format.lock(); if (!ptr) { return; @@ -409,11 +411,11 @@ ExportFormatManager::change_dither_type_selection (bool select, WeakDitherTypePt } void -ExportFormatManager::select_compatibility (WeakCompatPtr const & /*compat*/) +ExportFormatManager::select_compatibility (WeakExportFormatCompatibilityPtr const & /*compat*/) { /* Calculate compatibility intersection for the selection */ - FormatBasePtr compat_intersect = get_compatibility_intersection (); + ExportFormatBasePtr compat_intersect = get_compatibility_intersection (); /* Unselect incompatible items */ @@ -426,7 +428,7 @@ ExportFormatManager::select_compatibility (WeakCompatPtr const & /*compat*/) select_intersect = compat_intersect->get_intersection (*current_selection); if (select_intersect->formats_empty()) { - select_format (FormatPtr()); + select_format (ExportFormatPtr()); } select_intersect = compat_intersect->get_intersection (*current_selection); @@ -453,7 +455,7 @@ ExportFormatManager::select_quality (QualityPtr const & quality) /* Deselect format if it is incompatible */ - FormatPtr format = get_selected_format(); + ExportFormatPtr format = get_selected_format(); if (format && !format->has_quality (quality->quality)) { format->set_selected (false); } @@ -479,7 +481,7 @@ ExportFormatManager::select_quality (QualityPtr const & quality) } void -ExportFormatManager::select_format (FormatPtr const & format) +ExportFormatManager::select_format (ExportFormatPtr const & format) { bool do_selection_changed = !pending_selection_change; if (!pending_selection_change) { @@ -525,7 +527,7 @@ ExportFormatManager::select_format (FormatPtr const & format) current_selection->set_sample_format (format_to_select); } else { - FormatPtr current_format = get_selected_format (); + ExportFormatPtr current_format = get_selected_format (); if (current_format) { current_format->set_selected (false); } @@ -627,7 +629,7 @@ ExportFormatManager::selection_changed () /* Mark compatibility for everything necessary */ std::set<ExportFormatBase::Quality> compatible_qualities; - FormatBasePtr compat_intersect = get_compatibility_intersection (); + ExportFormatBasePtr compat_intersect = get_compatibility_intersection (); ExportFormatCompatibility global_compat (*compat_intersect); for (FormatList::iterator it = formats.begin(); it != formats.end(); ++it) { @@ -702,10 +704,10 @@ ExportFormatManager::get_selected_quality () return QualityPtr(); } -ExportFormatManager::FormatPtr +ExportFormatPtr ExportFormatManager::get_selected_format () { - FormatPtr format; + ExportFormatPtr format; for (FormatList::iterator it = formats.begin(); it != formats.end(); ++it) { if ((*it)->selected()) { @@ -741,10 +743,10 @@ ExportFormatManager::get_selected_sample_format () } -ExportFormatManager::FormatBasePtr +ExportFormatBasePtr ExportFormatManager::get_compatibility_intersection () { - FormatBasePtr compat_intersect = universal_set; + ExportFormatBasePtr compat_intersect = universal_set; for (CompatList::iterator it = compatibilities.begin(); it != compatibilities.end(); ++it) { if ((*it)->selected ()) { diff --git a/libs/ardour/export_format_specification.cc b/libs/ardour/export_format_specification.cc index 3f6e2b83c8..619c50b9f9 100644 --- a/libs/ardour/export_format_specification.cc +++ b/libs/ardour/export_format_specification.cc @@ -519,7 +519,7 @@ ExportFormatSpecification::description () } else if (_trim_beginning) { desc += _("trim start, "); } else if (_trim_end) { - desc += "trim end, "; + desc += _("trim end, "); } desc += _format_name + ", "; diff --git a/libs/ardour/export_graph_builder.cc b/libs/ardour/export_graph_builder.cc index 86d374a1da..f01b5e0904 100644 --- a/libs/ardour/export_graph_builder.cc +++ b/libs/ardour/export_graph_builder.cc @@ -206,7 +206,7 @@ void ExportGraphBuilder::Encoder::copy_files (std::string orig_path) { while (filenames.size()) { - FilenamePtr & filename = filenames.front(); + ExportFilenamePtr & filename = filenames.front(); PBD::sys::copy_file (orig_path, filename->get_path (config.format).c_str()); filenames.pop_front(); } diff --git a/libs/ardour/export_handler.cc b/libs/ardour/export_handler.cc index 677bbd9803..9279c73266 100644 --- a/libs/ardour/export_handler.cc +++ b/libs/ardour/export_handler.cc @@ -56,46 +56,46 @@ ExportElementFactory::~ExportElementFactory () } -ExportElementFactory::TimespanPtr +ExportTimespanPtr ExportElementFactory::add_timespan () { - return TimespanPtr (new ExportTimespan (session.get_export_status(), session.frame_rate())); + return ExportTimespanPtr (new ExportTimespan (session.get_export_status(), session.frame_rate())); } -ExportElementFactory::ChannelConfigPtr +ExportChannelConfigPtr ExportElementFactory::add_channel_config () { - return ChannelConfigPtr (new ExportChannelConfiguration (session)); + return ExportChannelConfigPtr (new ExportChannelConfiguration (session)); } -ExportElementFactory::FormatPtr +ExportFormatSpecPtr ExportElementFactory::add_format () { - return FormatPtr (new ExportFormatSpecification (session)); + return ExportFormatSpecPtr (new ExportFormatSpecification (session)); } -ExportElementFactory::FormatPtr +ExportFormatSpecPtr ExportElementFactory::add_format (XMLNode const & state) { - return FormatPtr (new ExportFormatSpecification (session, state)); + return ExportFormatSpecPtr (new ExportFormatSpecification (session, state)); } -ExportElementFactory::FormatPtr -ExportElementFactory::add_format_copy (FormatPtr other) +ExportFormatSpecPtr +ExportElementFactory::add_format_copy (ExportFormatSpecPtr other) { - return FormatPtr (new ExportFormatSpecification (*other)); + return ExportFormatSpecPtr (new ExportFormatSpecification (*other)); } -ExportElementFactory::FilenamePtr +ExportFilenamePtr ExportElementFactory::add_filename () { - return FilenamePtr (new ExportFilename (session)); + return ExportFilenamePtr (new ExportFilename (session)); } -ExportElementFactory::FilenamePtr -ExportElementFactory::add_filename_copy (FilenamePtr other) +ExportFilenamePtr +ExportElementFactory::add_filename_copy (ExportFilenamePtr other) { - return FilenamePtr (new ExportFilename (*other)); + return ExportFilenamePtr (new ExportFilename (*other)); } /*** ExportHandler ***/ @@ -118,7 +118,9 @@ ExportHandler::~ExportHandler () } bool -ExportHandler::add_export_config (TimespanPtr timespan, ChannelConfigPtr channel_config, FormatPtr format, FilenamePtr filename, boost::shared_ptr<AudioGrapher::BroadcastInfo> broadcast_info) +ExportHandler::add_export_config (ExportTimespanPtr timespan, ExportChannelConfigPtr channel_config, + ExportFormatSpecPtr format, ExportFilenamePtr filename, + BroadcastInfoPtr broadcast_info) { FileSpec spec (channel_config, format, filename, broadcast_info); ConfigPair pair (timespan, spec); @@ -133,7 +135,7 @@ ExportHandler::do_export (bool rt) /* Count timespans */ export_status->init(); - std::set<TimespanPtr> timespan_set; + std::set<ExportTimespanPtr> timespan_set; for (ConfigMap::iterator it = config_map.begin(); it != config_map.end(); ++it) { timespan_set.insert (it->first); } @@ -246,7 +248,8 @@ struct LocationSortByStart { }; void -ExportHandler::export_cd_marker_file (TimespanPtr timespan, FormatPtr file_format, std::string filename, CDMarkerFormat format) +ExportHandler::export_cd_marker_file (ExportTimespanPtr timespan, ExportFormatSpecPtr file_format, + std::string filename, CDMarkerFormat format) { string filepath; string basename = Glib::path_get_basename(filename); diff --git a/libs/ardour/export_profile_manager.cc b/libs/ardour/export_profile_manager.cc index a86b2a7768..766067ece2 100644 --- a/libs/ardour/export_profile_manager.cc +++ b/libs/ardour/export_profile_manager.cc @@ -124,7 +124,7 @@ ExportProfileManager::prepare_for_export () format_it != formats.end() && filename_it != filenames.end(); ++format_it, ++filename_it) { - FilenamePtr filename = (*filename_it)->filename; + ExportFilenamePtr filename = (*filename_it)->filename; // filename->include_timespan = (ts_list->size() > 1); Disabled for now... boost::shared_ptr<BroadcastInfo> b; @@ -143,7 +143,7 @@ ExportProfileManager::prepare_for_export () } bool -ExportProfileManager::load_preset (PresetPtr preset) +ExportProfileManager::load_preset (ExportPresetPtr preset) { bool ok = true; @@ -181,7 +181,7 @@ ExportProfileManager::preset_filename (std::string const & preset_name) return export_config_dir.to_string() + "/" + safe_name + export_preset_suffix; } -ExportProfileManager::PresetPtr +ExportPresetPtr ExportProfileManager::new_preset (string const & name) { // Generate new ID and do regular save @@ -191,7 +191,7 @@ ExportProfileManager::new_preset (string const & name) return save_preset (name); } -ExportProfileManager::PresetPtr +ExportPresetPtr ExportProfileManager::save_preset (string const & name) { string filename = preset_filename (name); @@ -241,7 +241,7 @@ ExportProfileManager::remove_preset () void ExportProfileManager::load_preset_from_disk (PBD::sys::path const & path) { - PresetPtr preset (new ExportPreset (path.to_string(), session)); + ExportPresetPtr preset (new ExportPreset (path.to_string(), session)); /* Handle id to filename mapping and don't add duplicates to list */ @@ -363,7 +363,7 @@ ExportProfileManager::init_timespans (XMLNodeList nodes) timespans.push_back (state); // Add session as default selection - TimespanPtr timespan = handler->add_timespan(); + ExportTimespanPtr timespan = handler->add_timespan(); timespan->set_name (session_range->name()); timespan->set_range_id ("session"); timespan->set_range (session_range->start(), session_range->end()); @@ -391,7 +391,7 @@ ExportProfileManager::deserialize_timespan (XMLNode & root) if ((!id.compare ("session") && *it == session_range.get()) || (!id.compare ("selection") && *it == selection_range.get()) || (!id.compare ((*it)->id().to_s()))) { - TimespanPtr timespan = handler->add_timespan(); + ExportTimespanPtr timespan = handler->add_timespan(); timespan->set_name ((*it)->name()); timespan->set_range_id (id); timespan->set_range ((*it)->start(), (*it)->end()); @@ -520,7 +520,7 @@ ExportProfileManager::remove_format_state (FormatStatePtr state) } sys::path -ExportProfileManager::save_format_to_disk (FormatPtr format) +ExportProfileManager::save_format_to_disk (ExportFormatSpecPtr format) { // TODO filename character stripping @@ -577,7 +577,7 @@ ExportProfileManager::save_format_to_disk (FormatPtr format) } void -ExportProfileManager::remove_format_profile (FormatPtr format) +ExportProfileManager::remove_format_profile (ExportFormatSpecPtr format) { for (FormatList::iterator it = format_list->begin(); it != format_list->end(); ++it) { if (*it == format) { @@ -595,10 +595,10 @@ ExportProfileManager::remove_format_profile (FormatPtr format) FormatListChanged (); } -ExportProfileManager::FormatPtr -ExportProfileManager::get_new_format (FormatPtr original) +ExportFormatSpecPtr +ExportProfileManager::get_new_format (ExportFormatSpecPtr original) { - FormatPtr format; + ExportFormatSpecPtr format; if (original) { format.reset (new ExportFormatSpecification (*original)); } else { @@ -630,7 +630,7 @@ ExportProfileManager::init_formats (XMLNodeList nodes) } if (formats.empty ()) { - FormatStatePtr format (new FormatState (format_list, FormatPtr ())); + FormatStatePtr format (new FormatState (format_list, ExportFormatSpecPtr ())); formats.push_back (format); return false; } @@ -682,7 +682,7 @@ void ExportProfileManager::load_format_from_disk (PBD::sys::path const & path) { XMLTree const tree (path.to_string()); - FormatPtr format = handler->add_format (*tree.root()); + ExportFormatSpecPtr format = handler->add_format (*tree.root()); /* Handle id to filename mapping and don't add duplicates to list */ @@ -719,7 +719,7 @@ ExportProfileManager::init_filenames (XMLNodeList nodes) filenames.clear (); for (XMLNodeList::const_iterator it = nodes.begin(); it != nodes.end(); ++it) { - FilenamePtr filename = handler->add_filename(); + ExportFilenamePtr filename = handler->add_filename(); filename->set_state (**it); filenames.push_back (FilenameStatePtr (new FilenameState (filename))); } @@ -746,7 +746,7 @@ ExportProfileManager::get_warnings () /*** Check "global" config ***/ TimespanListPtr timespans = timespan_state->timespans; - ChannelConfigPtr channel_config = channel_config_state->config; + ExportChannelConfigPtr channel_config = channel_config_state->config; /* Check Timespans are not empty */ @@ -781,9 +781,9 @@ ExportProfileManager::check_config (boost::shared_ptr<Warnings> warnings, FilenameStatePtr filename_state) { TimespanListPtr timespans = timespan_state->timespans; - ChannelConfigPtr channel_config = channel_config_state->config; - FormatPtr format = format_state->format; - FilenamePtr filename = filename_state->filename; + ExportChannelConfigPtr channel_config = channel_config_state->config; + ExportFormatSpecPtr format = format_state->format; + ExportFilenamePtr filename = filename_state->filename; /* Check format and maximum channel count */ if (!format || !format->type()) { @@ -806,7 +806,7 @@ ExportProfileManager::check_config (boost::shared_ptr<Warnings> warnings, // filename->include_timespan = (timespans->size() > 1); Disabled for now... - for (std::list<TimespanPtr>::iterator timespan_it = timespans->begin(); timespan_it != timespans->end(); ++timespan_it) { + for (std::list<ExportTimespanPtr>::iterator timespan_it = timespans->begin(); timespan_it != timespans->end(); ++timespan_it) { filename->set_timespan (*timespan_it); if (channel_config->get_split()) { @@ -833,7 +833,7 @@ ExportProfileManager::check_config (boost::shared_ptr<Warnings> warnings, } bool -ExportProfileManager::check_format (FormatPtr format, uint32_t channels) +ExportProfileManager::check_format (ExportFormatSpecPtr format, uint32_t channels) { switch (format->type()) { case ExportFormatBase::T_Sndfile: @@ -845,7 +845,7 @@ ExportProfileManager::check_format (FormatPtr format, uint32_t channels) } bool -ExportProfileManager::check_sndfile_format (FormatPtr format, unsigned int channels) +ExportProfileManager::check_sndfile_format (ExportFormatSpecPtr format, unsigned int channels) { SF_INFO sf_info; sf_info.channels = channels; |