#ifndef __ardour_export_filename_h__
#define __ardour_export_filename_h__
-#include <glibmm/ustring.h>
-#include <pbd/statefuldestructible.h>
+#include <boost/shared_ptr.hpp>
-#include <ardour/session.h>
+#include <string>
-using Glib::ustring;
+#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;
+class LIBARDOUR_API ExportFilename {
public:
enum DateFormat {
D_BE, // big endian (no deliminator)
D_BEShortY // big endian short year representation
};
-
+
enum TimeFormat {
T_None,
T_NoDelim,
friend class ExportElementFactory;
ExportFilename (Session & session);
- public:
+ public:
/* Serialization */
-
+
XMLNode & get_state ();
int set_state (const XMLNode &);
-
+
/* data access */
-
- ustring get_path (FormatPtr format) const;
- ustring get_folder () const { return folder; }
-
+
+ std::string get_path (ExportFormatSpecPtr format) const;
+ std::string get_folder () const { return folder; }
+
TimeFormat get_time_format () const { return time_format; }
DateFormat get_date_format () const { return date_format; }
- ustring get_time_format_str (TimeFormat format) const;
- ustring get_date_format_str (DateFormat format) const;
-
- ustring get_label () const { return label; }
+ std::string get_time_format_str (TimeFormat format) const;
+ std::string get_date_format_str (DateFormat format) const;
+
+ std::string get_label () const { return label; }
uint32_t get_revision () const { return revision; }
-
+
/* data modification */
-
+
void set_time_format (TimeFormat format);
void set_date_format (DateFormat format);
- void set_label (ustring value);
+ void set_label (std::string value);
void set_revision (uint32_t value) { revision = value; }
void set_channel (uint32_t value) { channel = value; }
- bool set_folder (ustring path);
-
- void set_timespan (TimespanPtr ts) { timespan = ts; }
- void set_channel_config (ChannelConfigPtr cc) { channel_config = cc; }
-
+ bool set_folder (std::string path);
+
+ void set_timespan (ExportTimespanPtr ts) { timespan = ts; }
+ void set_channel_config (ExportChannelConfigPtr cc) { channel_config = cc; }
+
/* public members */
-
+
bool include_label;
bool include_session;
+ bool use_session_snapshot_name;
bool include_revision;
bool include_channel_config;
+ bool include_format_name;
bool include_channel;
bool include_timespan;
bool include_time;
bool include_date;
-
+
private:
Session & session;
- ustring label;
+ std::string label;
uint32_t revision;
uint32_t channel;
-
- ustring folder;
-
+
+ std::string folder;
+
DateFormat date_format;
TimeFormat time_format;
-
- ustring get_formatted_time (ustring const & format) const;
- struct tm * time_struct; // Due to static allocation no destructor or copy-ctor is needed because of this
-
- TimespanPtr timespan;
- ChannelConfigPtr channel_config;
-
+
+ std::string get_formatted_time (std::string const & format) const;
+ struct tm time_struct;
+
+ ExportTimespanPtr timespan;
+ ExportChannelConfigPtr channel_config;
+
/* Serialization helpers */
-
- typedef std::pair<bool, ustring> FieldPair;
-
- void add_field (XMLNode * node, ustring const & name, bool enabled, ustring const & value = "");
- FieldPair get_field (XMLNode const & node, ustring const & name);
+
+ typedef std::pair<bool, std::string> FieldPair;
+
+ void add_field (XMLNode * node, std::string const & name, bool enabled, std::string const & value = "");
+ FieldPair get_field (XMLNode const & node, std::string const & name);
FieldPair analyse_folder ();
-
};