#define __ardour_source_h__
#include <string>
+#include <set>
#include <sigc++/signal.h>
+#include <pbd/statefuldestructible.h>
+
#include <ardour/ardour.h>
-#include <ardour/stateful.h>
namespace ARDOUR {
-class Source : public Stateful, 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);
- ARDOUR::id_t id() const { return _id; }
-
- uint32_t use_cnt() const { return _use_cnt; }
- void use ();
- void release ();
-
time_t timestamp() const { return _timestamp; }
void stamp (time_t when) { _timestamp = when; }
XMLNode& get_state ();
int set_state (const XMLNode&);
- sigc::signal<void,Source *> GoingAway;
+ 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;
- uint32_t _use_cnt;
time_t _timestamp;
+ std::set<ARDOUR::Playlist*> _playlists;
+
private:
- ARDOUR::id_t _id;
+ uint32_t _in_use;
};
}