#define __ardour_source_h__
#include <string>
+#include <set>
#include <sigc++/signal.h>
namespace ARDOUR {
-class Source : public PBD::StatefulDestructible, public sigc::trackable
+class Session;
+class Playlist;
+
+class Source : public PBD::StatefulDestructible
{
public:
- Source (std::string name);
- Source (const XMLNode&);
+ Source (Session&, std::string name);
+ Source (Session&, const XMLNode&);
virtual ~Source ();
std::string name() const { return _name; }
int set_name (std::string str, bool destructive);
- const PBD::ID& id() const { return _id; }
-
time_t timestamp() const { return _timestamp; }
void stamp (time_t when) { _timestamp = when; }
XMLNode& get_state ();
int set_state (const XMLNode&);
+ void use () { _in_use++; }
+ void disuse () { if (_in_use) { _in_use--; } }
+
+ void add_playlist (ARDOUR::Playlist*);
+ void remove_playlist (ARDOUR::Playlist*);
+
+ uint32_t used() const;
protected:
+ Session& _session;
string _name;
time_t _timestamp;
+ std::set<ARDOUR::Playlist*> _playlists;
+
private:
- PBD::ID _id;
+ uint32_t _in_use;
};
}