summaryrefslogtreecommitdiffstats
path: root/src/libs/engine/Patch.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/engine/Patch.h')
-rw-r--r--src/libs/engine/Patch.h47
1 files changed, 27 insertions, 20 deletions
diff --git a/src/libs/engine/Patch.h b/src/libs/engine/Patch.h
index e2a1ed48..5f2782d5 100644
--- a/src/libs/engine/Patch.h
+++ b/src/libs/engine/Patch.h
@@ -22,6 +22,7 @@
#include "NodeBase.h"
#include "Plugin.h"
#include "List.h"
+#include "DataType.h"
using std::string;
@@ -71,31 +72,37 @@ public:
void add_node(ListNode<Node*>* tn);
ListNode<Node*>* remove_node(const string& name);
- List<Node*>& nodes() { return m_nodes; }
- List<Connection*>& connections() { return m_connections; }
+ List<Node*>& nodes() { return _nodes; }
+ List<Connection*>& connections() { return _connections; }
- const List<Node*>& nodes() const { return m_nodes; }
- const List<Connection*>& connections() const { return m_connections; }
+ const List<Node*>& nodes() const { return _nodes; }
+ const List<Connection*>& connections() const { return _connections; }
- void add_bridge_node(ListNode<InternalNode*>* n) { m_bridge_nodes.push_back(n); }
- ListNode<InternalNode*>* remove_bridge_node(const InternalNode* n);
+ //void add_bridge_node(ListNode<InternalNode*>* n) { _bridge_nodes.push_back(n); }
+ //ListNode<InternalNode*>* remove_bridge_node(const InternalNode* n);
+ Port* create_port(const string& name, DataType type, size_t buffer_size, bool is_output);
+ void add_port(ListNode<Port*>* port) { _patch_ports.push_back(port); }
+ ListNode<Port*>* remove_port(const Port* p);
- void add_connection(ListNode<Connection*>* c) { m_connections.push_back(c); }
+ void add_connection(ListNode<Connection*>* c) { _connections.push_back(c); }
ListNode<Connection*>* remove_connection(const Port* src_port, const Port* dst_port);
- Array<Node*>* process_order() { return m_process_order; }
- void process_order(Array<Node*>* po) { m_process_order = po; }
+ Array<Node*>* process_order() { return _process_order; }
+ void process_order(Array<Node*>* po) { _process_order = po; }
+
+ Array<Port*>* external_ports() { return _ports; }
+ void external_ports(Array<Port*>* pa) { _ports = pa; }
Array<Node*>* build_process_order() const;
inline void build_process_order_recursive(Node* n, Array<Node*>* order) const;
/** Whether to run this patch's DSP in the audio thread */
- bool process() const { return m_process; }
- void process(bool b);
+ bool process() const { return _process; }
+ void process(bool p);
- size_t internal_poly() const { return m_internal_poly; }
+ size_t internal_poly() const { return _internal_poly; }
- const Plugin* plugin() const { return &m_plugin; }
+ const Plugin* plugin() const { return &_plugin; }
void plugin(const Plugin* const) { exit(EXIT_FAILURE); }
private:
@@ -103,14 +110,14 @@ private:
Patch(const Patch&);
Patch& operator=(const Patch&);
- size_t m_internal_poly;
- Array<Node*>* m_process_order;
- List<Connection*> m_connections;
- List<InternalNode*> m_bridge_nodes; ///< Inputs and outputs
- List<Node*> m_nodes;
- bool m_process;
+ size_t _internal_poly;
+ Array<Node*>* _process_order; ///< Accessed in audio thread only
+ List<Connection*> _connections; ///< Accessed in audio thread only
+ List<Port*> _patch_ports; ///< Accessed in preprocessing thread only
+ List<Node*> _nodes; ///< Accessed in preprocessing thread only
+ bool _process;
- Plugin m_plugin;
+ Plugin _plugin;
};