summaryrefslogtreecommitdiffstats
path: root/src/libs/engine/NodeBase.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2006-06-18 19:26:53 +0000
committerDavid Robillard <d@drobilla.net>2006-06-18 19:26:53 +0000
commit36f1e2ea3d2c7d20d8fa267a3a66438044e99e8e (patch)
tree963d5a6d87204fda9d8b1cd91f8810a6582bb41f /src/libs/engine/NodeBase.cpp
parent00c8938a79d9e24547420d2a39421bcb7d8cc165 (diff)
downloadingen-36f1e2ea3d2c7d20d8fa267a3a66438044e99e8e.tar.gz
ingen-36f1e2ea3d2c7d20d8fa267a3a66438044e99e8e.tar.bz2
ingen-36f1e2ea3d2c7d20d8fa267a3a66438044e99e8e.zip
Reworked use of Plugin class in engine slightly (more RAII-ey)
git-svn-id: http://svn.drobilla.net/lad/grauph@56 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/libs/engine/NodeBase.cpp')
-rw-r--r--src/libs/engine/NodeBase.cpp18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/libs/engine/NodeBase.cpp b/src/libs/engine/NodeBase.cpp
index 4eeada15..a5f23e84 100644
--- a/src/libs/engine/NodeBase.cpp
+++ b/src/libs/engine/NodeBase.cpp
@@ -34,18 +34,19 @@ using std::cout; using std::cerr; using std::endl;
namespace Om {
-NodeBase::NodeBase(const string& name, size_t poly, Patch* parent, samplerate srate, size_t buffer_size)
+NodeBase::NodeBase(const Plugin* plugin, const string& name, size_t poly, Patch* parent, samplerate srate, size_t buffer_size)
: Node(parent, name),
+ _plugin(plugin),
_poly(poly),
_srate(srate),
_buffer_size(buffer_size),
_activated(false),
- _num_ports(0),
_ports(NULL),
_traversed(false),
_providers(new List<Node*>()),
_dependants(new List<Node*>())
{
+ assert(_plugin);
assert(_poly > 0);
assert(_parent == NULL || (_poly == parent->internal_poly() || _poly == 1));
}
@@ -58,7 +59,7 @@ NodeBase::~NodeBase()
delete _providers;
delete _dependants;
- for (size_t i=0; i < _num_ports; ++i)
+ for (size_t i=0; i < num_ports(); ++i)
delete _ports->at(i);
}
@@ -108,7 +109,7 @@ NodeBase::remove_from_store()
}
// Remove ports
- for (size_t i=0; i < _num_ports; ++i) {
+ for (size_t i=0; i < num_ports(); ++i) {
node = om->object_store()->remove(_ports->at(i)->path());
if (node != NULL) {
assert(om->object_store()->find(_ports->at(i)->path()) == NULL);
@@ -125,11 +126,8 @@ NodeBase::run(size_t nframes)
{
assert(_activated);
// Mix down any ports with multiple inputs
- Port* p;
- for (size_t i=0; i < _ports->size(); ++i) {
- p = _ports->at(i);
- p->prepare_buffers(nframes);
- }
+ for (size_t i=0; i < _ports->size(); ++i)
+ _ports->at(i)->prepare_buffers(nframes);
}
@@ -147,7 +145,7 @@ NodeBase::set_path(const Path& new_path)
TreeNode<OmObject*>* treenode = NULL;
// Reinsert ports
- for (size_t i=0; i < _num_ports; ++i) {
+ for (size_t i=0; i < num_ports(); ++i) {
treenode = om->object_store()->remove(old_path +"/"+ _ports->at(i)->name());
assert(treenode != NULL);
assert(treenode->node() == _ports->at(i));