summaryrefslogtreecommitdiffstats
path: root/src/libs/engine/NodeBase.hpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-10-07 23:09:48 +0000
committerDavid Robillard <d@drobilla.net>2007-10-07 23:09:48 +0000
commit971c02f3707c4872a2da9a3b946b6508290c5ab4 (patch)
tree1dd28dabb27f75a1c5fc79bb583e50c8ec98974f /src/libs/engine/NodeBase.hpp
parent288a04a65de1ff86ff0ca6e02e611f83e881d159 (diff)
downloadingen-971c02f3707c4872a2da9a3b946b6508290c5ab4.tar.gz
ingen-971c02f3707c4872a2da9a3b946b6508290c5ab4.tar.bz2
ingen-971c02f3707c4872a2da9a3b946b6508290c5ab4.zip
Added shared abstract interface for ports.
Moved DataType to shared. Switch data type URIs to match LV2 type semantics (e.g. separate audio/control types). git-svn-id: http://svn.drobilla.net/lad/ingen@840 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/libs/engine/NodeBase.hpp')
-rw-r--r--src/libs/engine/NodeBase.hpp23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/libs/engine/NodeBase.hpp b/src/libs/engine/NodeBase.hpp
index 2e4480b8..9aa26310 100644
--- a/src/libs/engine/NodeBase.hpp
+++ b/src/libs/engine/NodeBase.hpp
@@ -23,6 +23,7 @@
#include <cstdlib>
#include <raul/Semaphore.hpp>
#include <raul/AtomicInt.hpp>
+#include "interface/Port.hpp"
#include "NodeImpl.hpp"
using std::string;
@@ -84,7 +85,8 @@ public:
bool traversed() const { return _traversed; }
void traversed(bool b) { _traversed = b; }
- const Raul::Array<Port*>& ports() const { return *_ports; }
+ virtual Port* port(uint32_t index) const;
+ virtual PortImpl* port_impl(uint32_t index) const { return (*_ports)[index]; }
/* These are NOT to be used in the audio thread!
* The providers and dependants in CompiledNode are for that
@@ -96,8 +98,9 @@ public:
Raul::List<NodeImpl*>* dependants() { return _dependants; }
void dependants(Raul::List<NodeImpl*>* l) { _dependants = l; }
- virtual const PluginImpl* plugin() const { return _plugin; }
- virtual void plugin(const PluginImpl* const pi) { _plugin = pi; }
+ virtual const Plugin* plugin() const;
+ virtual const PluginImpl* plugin_impl() const { return _plugin; }
+ virtual void plugin(const PluginImpl* pi) { _plugin = pi; }
/** A node's parent is always a patch, so static cast should be safe */
inline Patch* parent_patch() const { return (Patch*)_parent; }
@@ -112,13 +115,13 @@ protected:
size_t _buffer_size;
bool _activated;
- bool _traversed; ///< Flag for process order algorithm
- Raul::Semaphore _input_ready; ///< Parallelism: input ready signal
- Raul::AtomicInt _process_lock; ///< Parallelism: Waiting on inputs 'lock'
- Raul::AtomicInt _n_inputs_ready; ///< Parallelism: # input ready signals this cycle
- Raul::Array<Port*>* _ports; ///< Access in audio thread only
- Raul::List<NodeImpl*>* _providers; ///< Nodes connected to this one's input ports
- Raul::List<NodeImpl*>* _dependants; ///< Nodes this one's output ports are connected to
+ bool _traversed; ///< Flag for process order algorithm
+ Raul::Semaphore _input_ready; ///< Parallelism: input ready signal
+ Raul::AtomicInt _process_lock; ///< Parallelism: Waiting on inputs 'lock'
+ Raul::AtomicInt _n_inputs_ready; ///< Parallelism: # input ready signals this cycle
+ Raul::Array<PortImpl*>* _ports; ///< Access in audio thread only
+ Raul::List<NodeImpl*>* _providers; ///< Nodes connected to this one's input ports
+ Raul::List<NodeImpl*>* _dependants; ///< Nodes this one's output ports are connected to
};