summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libs/engine/AlsaMidiDriver.cpp10
-rw-r--r--src/libs/engine/AlsaMidiDriver.h10
-rw-r--r--src/libs/engine/Array.h106
-rw-r--r--src/libs/engine/AudioDriver.h4
-rw-r--r--src/libs/engine/Connection.h4
-rw-r--r--src/libs/engine/DSSINode.cpp2
-rw-r--r--src/libs/engine/DuplexPort.h2
-rw-r--r--src/libs/engine/Engine.cpp2
-rw-r--r--src/libs/engine/Event.h4
-rw-r--r--src/libs/engine/GraphObject.h6
-rw-r--r--src/libs/engine/InputPort.cpp24
-rw-r--r--src/libs/engine/InputPort.h10
-rw-r--r--src/libs/engine/JackAudioDriver.cpp12
-rw-r--r--src/libs/engine/JackAudioDriver.h10
-rw-r--r--src/libs/engine/JackMidiDriver.cpp8
-rw-r--r--src/libs/engine/JackMidiDriver.h12
-rw-r--r--src/libs/engine/LADSPANode.cpp2
-rw-r--r--src/libs/engine/LV2Node.cpp2
-rw-r--r--src/libs/engine/List.h409
-rw-r--r--src/libs/engine/Maid.cpp4
-rw-r--r--src/libs/engine/Maid.h8
-rw-r--r--src/libs/engine/MaidObject.h36
-rw-r--r--src/libs/engine/Makefile.am3
-rw-r--r--src/libs/engine/MidiControlNode.cpp2
-rw-r--r--src/libs/engine/MidiDriver.h1
-rw-r--r--src/libs/engine/MidiNoteNode.cpp4
-rw-r--r--src/libs/engine/MidiTriggerNode.cpp2
-rw-r--r--src/libs/engine/Node.h15
-rw-r--r--src/libs/engine/NodeBase.cpp8
-rw-r--r--src/libs/engine/NodeBase.h16
-rw-r--r--src/libs/engine/OSCClientSender.cpp2
-rw-r--r--src/libs/engine/ObjectSender.cpp6
-rw-r--r--src/libs/engine/ObjectStore.cpp6
-rw-r--r--src/libs/engine/Patch.cpp72
-rw-r--r--src/libs/engine/Patch.h52
-rw-r--r--src/libs/engine/Tree.h4
-rw-r--r--src/libs/engine/TypedPort.h4
-rw-r--r--src/libs/engine/events/AddNodeEvent.cpp2
-rw-r--r--src/libs/engine/events/AddNodeEvent.h4
-rw-r--r--src/libs/engine/events/AddPortEvent.cpp12
-rw-r--r--src/libs/engine/events/AddPortEvent.h6
-rw-r--r--src/libs/engine/events/AllNotesOffEvent.cpp2
-rw-r--r--src/libs/engine/events/ClearPatchEvent.cpp8
-rw-r--r--src/libs/engine/events/ClearPatchEvent.h2
-rw-r--r--src/libs/engine/events/ConnectionEvent.cpp8
-rw-r--r--src/libs/engine/events/ConnectionEvent.h12
-rw-r--r--src/libs/engine/events/CreatePatchEvent.cpp2
-rw-r--r--src/libs/engine/events/CreatePatchEvent.h9
-rw-r--r--src/libs/engine/events/DestroyEvent.h19
-rw-r--r--src/libs/engine/events/DisconnectNodeEvent.cpp14
-rw-r--r--src/libs/engine/events/DisconnectNodeEvent.h7
-rw-r--r--src/libs/engine/events/DisconnectPortEvent.cpp14
-rw-r--r--src/libs/engine/events/DisconnectPortEvent.h8
-rw-r--r--src/libs/engine/events/DisconnectionEvent.cpp8
-rw-r--r--src/libs/engine/events/DisconnectionEvent.h10
-rw-r--r--src/libs/engine/events/EnablePatchEvent.h4
-rw-r--r--src/libs/engine/events/RenameEvent.h5
-rw-r--r--src/libs/engine/tests/Makefile.am10
-rw-r--r--src/libs/engine/tests/list_test.cpp93
59 files changed, 252 insertions, 891 deletions
diff --git a/src/libs/engine/AlsaMidiDriver.cpp b/src/libs/engine/AlsaMidiDriver.cpp
index 1d24f318..47566880 100644
--- a/src/libs/engine/AlsaMidiDriver.cpp
+++ b/src/libs/engine/AlsaMidiDriver.cpp
@@ -37,7 +37,7 @@ namespace Ingen {
AlsaMidiPort::AlsaMidiPort(AlsaMidiDriver* driver, DuplexPort<MidiMessage>* patch_port)
: DriverPort(patch_port->is_input()),
- ListNode<AlsaMidiPort*>(this),
+ Raul::ListNode<AlsaMidiPort*>(this),
_driver(driver),
_patch_port(patch_port),
_port_id(0),
@@ -280,7 +280,7 @@ AlsaMidiDriver::deactivate()
void
AlsaMidiDriver::prepare_block(const SampleCount block_start, const SampleCount block_end)
{
- for (List<AlsaMidiPort*>::iterator i = _in_ports.begin(); i != _in_ports.end(); ++i)
+ for (Raul::List<AlsaMidiPort*>::iterator i = _in_ports.begin(); i != _in_ports.end(); ++i)
(*i)->prepare_block(block_start, block_end);
}
@@ -320,11 +320,11 @@ AlsaMidiDriver::remove_port(const Path& path)
// FIXME: duplex?
- for (List<AlsaMidiPort*>::iterator i = _in_ports.begin(); i != _in_ports.end(); ++i)
+ for (Raul::List<AlsaMidiPort*>::iterator i = _in_ports.begin(); i != _in_ports.end(); ++i)
if ((*i)->patch_port()->path() == path)
return _in_ports.remove(i)->elem();
- for (List<AlsaMidiPort*>::iterator i = _out_ports.begin(); i != _out_ports.end(); ++i)
+ for (Raul::List<AlsaMidiPort*>::iterator i = _out_ports.begin(); i != _out_ports.end(); ++i)
if ((*i)->patch_port()->path() == path)
return _out_ports.remove(i)->elem();
@@ -349,7 +349,7 @@ AlsaMidiDriver::process_midi_in(void* alsa_driver)
while ( ! _midi_thread_exit_flag)
if (poll(&pfd, npfd, 100000) > 0)
while (snd_seq_event_input(ad->_seq_handle, &ev) > 0)
- for (List<AlsaMidiPort*>::iterator i = ad->_in_ports.begin(); i != ad->_in_ports.end(); ++i)
+ for (Raul::List<AlsaMidiPort*>::iterator i = ad->_in_ports.begin(); i != ad->_in_ports.end(); ++i)
if ((*i)->port_id() == ev->dest.port)
(*i)->event(ev);
diff --git a/src/libs/engine/AlsaMidiDriver.h b/src/libs/engine/AlsaMidiDriver.h
index 98123753..85d975b9 100644
--- a/src/libs/engine/AlsaMidiDriver.h
+++ b/src/libs/engine/AlsaMidiDriver.h
@@ -20,8 +20,8 @@
#include <boost/utility.hpp>
#include <alsa/asoundlib.h>
-#include "List.h"
-#include "raul/SRSWQueue.h"
+#include <raul/List.h>
+#include <raul/SRSWQueue.h>
#include "MidiDriver.h"
@@ -40,7 +40,7 @@ static const int MAX_MIDI_EVENT_SIZE = 3;
*
* \ingroup engine
*/
-class AlsaMidiPort : public DriverPort, public ListNode<AlsaMidiPort*>
+class AlsaMidiPort : public DriverPort, public Raul::ListNode<AlsaMidiPort*>
{
public:
AlsaMidiPort(AlsaMidiDriver* driver, DuplexPort<MidiMessage>* port);
@@ -96,8 +96,8 @@ public:
snd_midi_event_t* event_coder() const { return _event_coder; }
private:
- List<AlsaMidiPort*> _in_ports;
- List<AlsaMidiPort*> _out_ports;
+ Raul::List<AlsaMidiPort*> _in_ports;
+ Raul::List<AlsaMidiPort*> _out_ports;
friend class AlsaMidiPort;
diff --git a/src/libs/engine/Array.h b/src/libs/engine/Array.h
deleted file mode 100644
index 6c63d44c..00000000
--- a/src/libs/engine/Array.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/* This file is part of Ingen.
- * Copyright (C) 2007 Dave Robillard <http://drobilla.net>
- *
- * Ingen is free software; you can redistribute it and/or modify it under the
- * terms of the GNU General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option) any later
- * version.
- *
- * Ingen is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef ARRAY_H
-#define ARRAY_H
-
-#include "MaidObject.h"
-#include <cassert>
-#include <cstdlib>
-#include "types.h"
-
-
-/** An array.
- *
- * Has a stack-like push_back() too, for find_process_order...
- */
-template <class T>
-class Array : public MaidObject
-{
-public:
- Array(size_t size = 0) : _size(size), _top(0), _elems(NULL) {
- if (size > 0)
- _elems = new T[size];
- }
-
- Array(size_t size, T initial_value) : _size(size), _top(0), _elems(NULL) {
- if (size > 0) {
- _elems = new T[size];
- for (size_t i=0; i < size; ++i)
- _elems[i] = initial_value;
- }
- }
-
- Array(size_t size, const Array<T>& contents) : _size(size), _top(size+1) {
- _elems = new T[size];
- if (size <= contents.size())
- memcpy(_elems, contents._elems, size * sizeof(T));
- else
- memcpy(_elems, contents._elems, contents.size() * sizeof(T));
- }
-
- ~Array() {
- free();
- }
-
- void alloc(size_t num_elems) {
- assert(num_elems > 0);
-
- delete[] _elems;
- _size = num_elems;
- _top = 0;
-
- _elems = new T[num_elems];
- }
-
- void alloc(size_t num_elems, T initial_value) {
- assert(num_elems > 0);
-
- delete[] _elems;
- _size = num_elems;
- _top = 0;
-
- _elems = new T[num_elems];
- for (size_t i=0; i < _size; ++i)
- _elems[i] = initial_value;
- }
-
- void free() {
- delete[] _elems;
- _size = 0;
- _top = 0;
- }
-
- void push_back(T n) {
- assert(_top < _size);
- _elems[_top++] = n;
- }
-
- inline size_t size() const { return _size; }
-
- inline T& operator[](size_t i) const { assert(i < _size); return _elems[i]; }
-
- inline T& at(size_t i) const { assert(i < _size); return _elems[i]; }
-
-private:
- size_t _size;
- size_t _top; // points to empty element above "top" element
- T* _elems;
-};
-
-
-#endif // ARRAY_H
diff --git a/src/libs/engine/AudioDriver.h b/src/libs/engine/AudioDriver.h
index b449843c..9128c2ed 100644
--- a/src/libs/engine/AudioDriver.h
+++ b/src/libs/engine/AudioDriver.h
@@ -20,8 +20,8 @@
#include "Driver.h"
#include "types.h"
-#include "List.h"
-#include "raul/Path.h"
+#include <raul/List.h>
+#include <raul/Path.h>
namespace Ingen {
diff --git a/src/libs/engine/Connection.h b/src/libs/engine/Connection.h
index 2f0fed21..a7a2b3fa 100644
--- a/src/libs/engine/Connection.h
+++ b/src/libs/engine/Connection.h
@@ -20,7 +20,7 @@
#include <cstdlib>
#include <boost/utility.hpp>
-#include "MaidObject.h"
+#include <raul/Deletable.h>
#include "types.h"
namespace Ingen {
@@ -38,7 +38,7 @@ class Port;
*
* \ingroup engine
*/
-class Connection : public MaidObject
+class Connection : public Raul::Deletable
{
public:
virtual ~Connection() {}
diff --git a/src/libs/engine/DSSINode.cpp b/src/libs/engine/DSSINode.cpp
index e3a2091e..bf81f5ec 100644
--- a/src/libs/engine/DSSINode.cpp
+++ b/src/libs/engine/DSSINode.cpp
@@ -62,7 +62,7 @@ DSSINode::instantiate()
assert(!_ports);
if (has_midi_input()) {
- _ports = new Array<Port*>(_descriptor->PortCount + 1);
+ _ports = new Raul::Array<Port*>(_descriptor->PortCount + 1);
_midi_in_port = new InputPort<MidiMessage>(this, "MIDI_In", _ports->size()-1, 1, DataType::MIDI, _buffer_size);
_ports->at(_ports->size()-1) = _midi_in_port;
}
diff --git a/src/libs/engine/DuplexPort.h b/src/libs/engine/DuplexPort.h
index d1b8847b..1c4e738d 100644
--- a/src/libs/engine/DuplexPort.h
+++ b/src/libs/engine/DuplexPort.h
@@ -20,7 +20,7 @@
#include <string>
#include "types.h"
-#include "Array.h"
+#include <raul/Array.h>
#include "Buffer.h"
#include "InputPort.h"
#include "OutputPort.h"
diff --git a/src/libs/engine/Engine.cpp b/src/libs/engine/Engine.cpp
index 9781b5af..bf880c11 100644
--- a/src/libs/engine/Engine.cpp
+++ b/src/libs/engine/Engine.cpp
@@ -28,7 +28,7 @@
#include "ClientBroadcaster.h"
#include "Patch.h"
#include "ObjectStore.h"
-#include "MaidObject.h"
+#include <raul/Deletable.h>
#include "Maid.h"
#include "MidiDriver.h"
#include "QueuedEventSource.h"
diff --git a/src/libs/engine/Event.h b/src/libs/engine/Event.h
index 628b774b..f0fd170a 100644
--- a/src/libs/engine/Event.h
+++ b/src/libs/engine/Event.h
@@ -21,7 +21,7 @@
#include <cassert>
#include "raul/SharedPtr.h"
#include "types.h"
-#include "MaidObject.h"
+#include <raul/Deletable.h>
#include "Responder.h"
#include "ThreadManager.h"
@@ -44,7 +44,7 @@ class Engine;
*
* \ingroup engine
*/
-class Event : public MaidObject
+class Event : public Raul::Deletable
{
public:
virtual ~Event() {}
diff --git a/src/libs/engine/GraphObject.h b/src/libs/engine/GraphObject.h
index aaf20e25..8754c28a 100644
--- a/src/libs/engine/GraphObject.h
+++ b/src/libs/engine/GraphObject.h
@@ -22,7 +22,7 @@
#include <map>
#include <cstddef>
#include <cassert>
-#include "MaidObject.h"
+#include <raul/Deletable.h>
#include "raul/Path.h"
#include "raul/Atom.h"
#include "types.h"
@@ -41,13 +41,13 @@ class ObjectStore;
/** An object on the audio graph - Patch, Node, Port, etc.
*
- * Each of these is a MaidObject and so can be deleted in a realtime safe
+ * Each of these is a Raul::Deletable and so can be deleted in a realtime safe
* way from anywhere, and they all have a map of metadata for clients to store
* arbitrary values in (which the engine puts no significance to whatsoever).
*
* \ingroup engine
*/
-class GraphObject : public MaidObject
+class GraphObject : public Raul::Deletable
{
public:
typedef std::map<string, Atom> MetadataMap;
diff --git a/src/libs/engine/InputPort.cpp b/src/libs/engine/InputPort.cpp
index 92a62a0e..cf0be342 100644
--- a/src/libs/engine/InputPort.cpp
+++ b/src/libs/engine/InputPort.cpp
@@ -46,7 +46,7 @@ template InputPort<MidiMessage>::InputPort(Node* parent, const string& name, siz
*/
template<typename T>
void
-InputPort<T>::add_connection(ListNode<TypedConnection<T>*>* const c)
+InputPort<T>::add_connection(Raul::ListNode<TypedConnection<T>*>* const c)
{
_connections.push_back(c);
@@ -78,23 +78,23 @@ InputPort<T>::add_connection(ListNode<TypedConnection<T>*>* const c)
//assert( ! _is_tied || _tied_port != NULL);
//assert( ! _is_tied || _buffers.at(0)->data() == _tied_port->buffer(0)->data());
}
-template void InputPort<Sample>::add_connection(ListNode<TypedConnection<Sample>*>* const c);
-template void InputPort<MidiMessage>::add_connection(ListNode<TypedConnection<MidiMessage>*>* const c);
+template void InputPort<Sample>::add_connection(Raul::ListNode<TypedConnection<Sample>*>* const c);
+template void InputPort<MidiMessage>::add_connection(Raul::ListNode<TypedConnection<MidiMessage>*>* const c);
/** Remove a connection. Realtime safe.
*/
template <typename T>
-ListNode<TypedConnection<T>*>*
+Raul::ListNode<TypedConnection<T>*>*
InputPort<T>::remove_connection(const OutputPort<T>* const src_port)
{
bool modify_buffers = !_fixed_buffers;
//if (modify_buffers && _is_tied)
// modify_buffers = !_tied_port->fixed_buffers();
- typedef typename List<TypedConnection<T>*>::iterator TypedConnectionListIterator;
+ typedef typename Raul::List<TypedConnection<T>*>::iterator TypedConnectionListIterator;
bool found = false;
- ListNode<TypedConnection<T>*>* connection = NULL;
+ Raul::ListNode<TypedConnection<T>*>* connection = NULL;
for (TypedConnectionListIterator i = _connections.begin(); i != _connections.end(); ++i) {
if ((*i)->src_port()->path() == src_port->path()) {
connection = _connections.remove(i);
@@ -133,9 +133,9 @@ InputPort<T>::remove_connection(const OutputPort<T>* const src_port)
return connection;
}
-template ListNode<TypedConnection<Sample>*>*
+template Raul::ListNode<TypedConnection<Sample>*>*
InputPort<Sample>::remove_connection(const OutputPort<Sample>* const src_port);
-template ListNode<TypedConnection<MidiMessage>*>*
+template Raul::ListNode<TypedConnection<MidiMessage>*>*
InputPort<MidiMessage>::remove_connection(const OutputPort<MidiMessage>* const src_port);
@@ -145,7 +145,7 @@ template <typename T>
bool
InputPort<T>::is_connected_to(const OutputPort<T>* const port) const
{
- typedef typename List<TypedConnection<T>*>::const_iterator TypedConnectionListIterator;
+ typedef typename Raul::List<TypedConnection<T>*>::const_iterator TypedConnectionListIterator;
for (TypedConnectionListIterator i = _connections.begin(); i != _connections.end(); ++i)
if ((*i)->src_port() == port)
return true;
@@ -165,7 +165,7 @@ InputPort<Sample>::process(SampleCount nframes, FrameTime start, FrameTime end)
{
//assert(!_is_tied || _tied_port != NULL);
- typedef List<TypedConnection<Sample>*>::iterator TypedConnectionListIterator;
+ typedef Raul::List<TypedConnection<Sample>*>::iterator TypedConnectionListIterator;
bool do_mixdown = true;
if (_connections.size() == 0) return;
@@ -233,7 +233,7 @@ InputPort<MidiMessage>::process(SampleCount nframes, FrameTime start, FrameTime
assert(num_ins == 0 || num_ins == 1);
- typedef List<TypedConnection<MidiMessage>*>::iterator TypedConnectionListIterator;
+ typedef Raul::List<TypedConnection<MidiMessage>*>::iterator TypedConnectionListIterator;
assert(_poly == 1);
for (TypedConnectionListIterator c = _connections.begin(); c != _connections.end(); ++c)
@@ -307,7 +307,7 @@ InputPort<T>::set_buffer_size(size_t size)
TypedPort<T>::set_buffer_size(size);
assert(_buffer_size = size);
- for (typename List<TypedConnection<T>*>::iterator c = _connections.begin(); c != _connections.end(); ++c)
+ for (typename Raul::List<TypedConnection<T>*>::iterator c = _connections.begin(); c != _connections.end(); ++c)
(*c)->set_buffer_size(size);
}
diff --git a/src/libs/engine/InputPort.h b/src/libs/engine/InputPort.h
index 0f96546f..14efd605 100644
--- a/src/libs/engine/InputPort.h
+++ b/src/libs/engine/InputPort.h
@@ -21,8 +21,8 @@
#include <string>
#include <cstdlib>
#include <cassert>
+#include <raul/List.h>
#include "TypedPort.h"
-#include "List.h"
#include "MidiMessage.h"
using std::string;
@@ -51,10 +51,10 @@ public:
InputPort(Node* parent, const string& name, size_t index, size_t poly, DataType type, size_t buffer_size);
virtual ~InputPort() {}
- void add_connection(ListNode<TypedConnection<T>*>* const c);
- ListNode<TypedConnection<T>*>* remove_connection(const OutputPort<T>* const src_port);
+ void add_connection(Raul::ListNode<TypedConnection<T>*>* const c);
+ Raul::ListNode<TypedConnection<T>*>* remove_connection(const OutputPort<T>* const src_port);
- const List<TypedConnection<T>*>& connections() { return _connections; }
+ const Raul::List<TypedConnection<T>*>& connections() { return _connections; }
void process(SampleCount nframes, FrameTime start, FrameTime end);
@@ -68,7 +68,7 @@ public:
private:
- List<TypedConnection<T>*> _connections;
+ Raul::List<TypedConnection<T>*> _connections;
// This is just stupid...
using TypedPort<T>::_buffers;
diff --git a/src/libs/engine/JackAudioDriver.cpp b/src/libs/engine/JackAudioDriver.cpp
index 6775fd46..da2c056a 100644
--- a/src/libs/engine/JackAudioDriver.cpp
+++ b/src/libs/engine/JackAudioDriver.cpp
@@ -20,6 +20,7 @@
#include "tuning.h"
#include <iostream>
#include <cstdlib>
+#include <raul/List.h>
#include "Engine.h"
#include "util.h"
#include "Event.h"
@@ -31,7 +32,6 @@
#include "Patch.h"
#include "Port.h"
#include "MidiDriver.h"
-#include "List.h"
#include "DuplexPort.h"
#include "EventSource.h"
#ifdef HAVE_LASH
@@ -48,7 +48,7 @@ namespace Ingen {
JackAudioPort::JackAudioPort(JackAudioDriver* driver, DuplexPort<Sample>* patch_port)
: DriverPort(patch_port->is_input()),
- ListNode<JackAudioPort*>(this),
+ Raul::ListNode<JackAudioPort*>(this),
_driver(driver),
_jack_port(NULL),
_jack_buffer(NULL),
@@ -194,7 +194,7 @@ JackAudioDriver::deactivate()
jack_deactivate(_client);
_is_activated = false;
- for (List<JackAudioPort*>::iterator i = _ports.begin(); i != _ports.end(); ++i)
+ for (Raul::List<JackAudioPort*>::iterator i = _ports.begin(); i != _ports.end(); ++i)
jack_port_unregister(_client, (*i)->jack_port());
_ports.clear();
@@ -236,7 +236,7 @@ JackAudioDriver::remove_port(const Path& path)
{
assert(ThreadManager::current_thread_id() == THREAD_PROCESS);
- for (List<JackAudioPort*>::iterator i = _ports.begin(); i != _ports.end(); ++i)
+ for (Raul::List<JackAudioPort*>::iterator i = _ports.begin(); i != _ports.end(); ++i)
if ((*i)->patch_port()->path() == path)
return _ports.remove(i)->elem();
@@ -248,7 +248,7 @@ JackAudioDriver::remove_port(const Path& path)
DriverPort*
JackAudioDriver::port(const Path& path)
{
- for (List<JackAudioPort*>::iterator i = _ports.begin(); i != _ports.end(); ++i)
+ for (Raul::List<JackAudioPort*>::iterator i = _ports.begin(); i != _ports.end(); ++i)
if ((*i)->patch_port()->path() == path)
return (*i);
@@ -299,7 +299,7 @@ JackAudioDriver::_process_cb(jack_nframes_t nframes)
_engine.event_source()->process(*_engine.post_processor(), nframes, start_of_last_cycle, start_of_current_cycle);
// Set buffers of patch ports to Jack port buffers (zero-copy processing)
- for (List<JackAudioPort*>::iterator i = _ports.begin(); i != _ports.end(); ++i) {
+ for (Raul::List<JackAudioPort*>::iterator i = _ports.begin(); i != _ports.end(); ++i) {
assert(*i);
(*i)->prepare_buffer(nframes);
}
diff --git a/src/libs/engine/JackAudioDriver.h b/src/libs/engine/JackAudioDriver.h
index 769cb716..8629335e 100644
--- a/src/libs/engine/JackAudioDriver.h
+++ b/src/libs/engine/JackAudioDriver.h
@@ -20,9 +20,9 @@
#include <jack/jack.h>
#include <jack/transport.h>
-#include "raul/Thread.h"
-#include "raul/Path.h"
-#include "List.h"
+#include <raul/Thread.h>
+#include <raul/Path.h>
+#include <raul/List.h>
#include "AudioDriver.h"
#include "Buffer.h"
@@ -40,7 +40,7 @@ typedef jack_default_audio_sample_t jack_sample_t;
*
* A Jack port always has a one-to-one association with a Patch port.
*/
-class JackAudioPort : public DriverPort, public ListNode<JackAudioPort*>
+class JackAudioPort : public DriverPort, public Raul::ListNode<JackAudioPort*>
{
public:
JackAudioPort(JackAudioDriver* driver, DuplexPort<Sample>* patch_port);
@@ -135,7 +135,7 @@ private:
jack_position_t _position;
jack_transport_state_t _transport_state;
- List<JackAudioPort*> _ports;
+ Raul::List<JackAudioPort*> _ports;
Patch* _root_patch;
};
diff --git a/src/libs/engine/JackMidiDriver.cpp b/src/libs/engine/JackMidiDriver.cpp
index 8414ff55..743d0fda 100644
--- a/src/libs/engine/JackMidiDriver.cpp
+++ b/src/libs/engine/JackMidiDriver.cpp
@@ -38,7 +38,7 @@ namespace Ingen {
JackMidiPort::JackMidiPort(JackMidiDriver* driver, DuplexPort<MidiMessage>* patch_port)
: DriverPort(patch_port->is_input()),
- ListNode<JackMidiPort*>(this),
+ Raul::ListNode<JackMidiPort*>(this),
_driver(driver),
_jack_port(NULL),
_patch_port(patch_port)
@@ -146,7 +146,7 @@ JackMidiDriver::deactivate()
void
JackMidiDriver::prepare_block(const SampleCount block_start, const SampleCount block_end)
{
- for (List<JackMidiPort*>::iterator i = _in_ports.begin(); i != _in_ports.end(); ++i)
+ for (Raul::List<JackMidiPort*>::iterator i = _in_ports.begin(); i != _in_ports.end(); ++i)
(*i)->prepare_block(block_start, block_end);
}
@@ -186,11 +186,11 @@ JackMidiDriver::remove_port(const Path& path)
// FIXME: duplex?
- for (List<JackMidiPort*>::iterator i = _in_ports.begin(); i != _in_ports.end(); ++i)
+ for (Raul::List<JackMidiPort*>::iterator i = _in_ports.begin(); i != _in_ports.end(); ++i)
if ((*i)->patch_port()->path() == path)
return _in_ports.remove(i)->elem();
- for (List<JackMidiPort*>::iterator i = _out_ports.begin(); i != _out_ports.end(); ++i)
+ for (Raul::List<JackMidiPort*>::iterator i = _out_ports.begin(); i != _out_ports.end(); ++i)
if ((*i)->patch_port()->path() == path)
return _out_ports.remove(i)->elem();
diff --git a/src/libs/engine/JackMidiDriver.h b/src/libs/engine/JackMidiDriver.h
index 67c70e02..d6d2cf51 100644
--- a/src/libs/engine/JackMidiDriver.h
+++ b/src/libs/engine/JackMidiDriver.h
@@ -20,8 +20,8 @@
#include <jack/jack.h>
#include <jack/midiport.h>
+#include <raul/List.h>
#include "config.h"
-#include "List.h"
#include "MidiDriver.h"
namespace Ingen {
@@ -36,7 +36,7 @@ template <typename T> class DuplexPort;
*
* \ingroup engine
*/
-class JackMidiPort : public DriverPort, public ListNode<JackMidiPort*>
+class JackMidiPort : public DriverPort, public Raul::ListNode<JackMidiPort*>
{
public:
JackMidiPort(JackMidiDriver* driver, DuplexPort<MidiMessage>* port);
@@ -87,13 +87,13 @@ public:
jack_client_t* jack_client() { return _client; }
private:
- List<JackMidiPort*> _in_ports;
- List<JackMidiPort*> _out_ports;
+ Raul::List<JackMidiPort*> _in_ports;
+ Raul::List<JackMidiPort*> _out_ports;
friend class JackMidiPort;
- void add_output(ListNode<JackMidiPort*>* port);
- ListNode<JackMidiPort*>* remove_output(JackMidiPort* port);
+ void add_output(Raul::ListNode<JackMidiPort*>* port);
+ Raul::ListNode<JackMidiPort*>* remove_output(JackMidiPort* port);
// MIDI thread
static void* process_midi_in(void* me);
diff --git a/src/libs/engine/LADSPANode.cpp b/src/libs/engine/LADSPANode.cpp
index 6a04abd1..d9b350b4 100644
--- a/src/libs/engine/LADSPANode.cpp
+++ b/src/libs/engine/LADSPANode.cpp
@@ -56,7 +56,7 @@ LADSPANode::instantiate()
{
// Note that a DSSI plugin might tack more on to the end of this
if (!_ports)
- _ports = new Array<Port*>(_descriptor->PortCount);
+ _ports = new Raul::Array<Port*>(_descriptor->PortCount);
_instances = new LADSPA_Handle[_poly];
diff --git a/src/libs/engine/LV2Node.cpp b/src/libs/engine/LV2Node.cpp
index 5fd5008c..3e88efc5 100644
--- a/src/libs/engine/LV2Node.cpp
+++ b/src/libs/engine/LV2Node.cpp
@@ -61,7 +61,7 @@ LV2Node::instantiate()
size_t num_ports = slv2_plugin_get_num_ports(_lv2_plugin);
assert(num_ports > 0);
- _ports = new Array<Port*>(num_ports);
+ _ports = new Raul::Array<Port*>(num_ports);
_instances = new SLV2Instance*[_poly];
diff --git a/src/libs/engine/List.h b/src/libs/engine/List.h
deleted file mode 100644
index a051b037..00000000
--- a/src/libs/engine/List.h
+++ /dev/null
@@ -1,409 +0,0 @@
-/* This file is part of Ingen.
- * Copyright (C) 2007 Dave Robillard <http://drobilla.net>
- *
- * Ingen is free software; you can redistribute it and/or modify it under the
- * terms of the GNU General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option) any later
- * version.
- *
- * Ingen is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef LIST_H
-#define LIST_H
-
-#include <cassert>
-#include "types.h"
-#include "MaidObject.h"
-
-
-/** A node in a List.
- *
- * This class is (unusually) exposed to the user to allow list operations
- * to be realtime safe (ie so events can allocate list nodes in other threads
- * and then insert them in the realtime thread.
- */
-template <typename T>
-class ListNode : public MaidObject
-{
-public:
- ListNode(T elem) : _elem(elem), _next(NULL), _prev(NULL) {}
- virtual ~ListNode() {}
-
- ListNode* next() const { return _next; }
- void next(ListNode* ln) { _next = ln; }
- ListNode* prev() const { return _prev; }
- void prev(ListNode* ln) { _prev = ln; }
- T& elem() { return _elem;}
- const T& elem() const { return _elem; }
-
-private:
- T _elem;
- ListNode* _next;
- ListNode* _prev;
-};
-
-
-
-/** A realtime safe, (partially) thread safe doubly linked list.
- *
- * Elements can be added safely while another thread is reading the list. See
- * documentation for specific functions for realtime/thread safeness.
- */
-template <typename T>
-class List : public MaidObject
-{
-public:
- List() : _head(NULL), _tail(NULL), _size(0), _end_iter(this), _const_end_iter(this)
- {
- _end_iter._listnode = NULL;
- _end_iter._next = NULL;
- _const_end_iter._listnode = NULL;
- _const_end_iter._next = NULL;
- }
- ~List();
-
- void push_back(ListNode<T>* elem);
- ListNode<T>* remove(const T elem);
-
- void clear();
- size_t size() const { return _size; }
-
- class iterator;
-
- /** Realtime safe const iterator for a List. */
- class const_iterator
- {
- public:
- const_iterator(const List<T>* const list);
- const_iterator(const iterator& i)
- : _list(i._list), _listnode(i._listnode), _next(i._next) {}
-
- inline const T& operator*();
- inline const_iterator& operator++();
- inline bool operator!=(const const_iterator& iter) const;
- inline bool operator!=(const iterator& iter) const;
-
- friend class List<T>;
-
- private:
- const List<T>* const _list;
- const ListNode<T>* _listnode;
- const ListNode<T>* _next; // use this instead of _listnode->next() to allow deleting
- };
-
-
- /** Realtime safe iterator for a List. */
- class iterator
- {
- public:
- iterator(List<T>* const list);
-
- inline T& operator*();
- inline iterator& operator++();
- inline bool operator!=(const iterator& iter) const;
- inline bool operator!=(const const_iterator& iter) const;
-
- friend class List<T>;
- friend class List<T>::const_iterator;
-
- private:
- const List<T>* _list;
- ListNode<T>* _listnode;
- ListNode<T>* _next; // use this instead of _listnode->next() to allow deleting
- };
-
-
- ListNode<T>* remove(const iterator iter);
-
- iterator begin();
- const iterator end() const;
-
- const_iterator begin() const;
- //const_iterator end() const;
-
-private:
- ListNode<T>* _head;
- ListNode<T>* _tail;
- size_t _size;
- iterator _end_iter;
- const_iterator _const_end_iter;
-};
-
-
-
-
-template <typename T>
-List<T>::~List<T>()
-{
- clear();
-}
-
-
-/** Clear the list, deleting all ListNodes contained (but NOT their contents!)
- *
- * Not realtime safe.
- */
-template <typename T>
-void
-List<T>::clear()
-{
- if (_head == NULL) return;
-
- ListNode<T>* node = _head;
- ListNode<T>* next = NULL;
-
- while (node != NULL) {
- next = node->next();
- delete node;
- node = next;
- }
- _tail = _head = NULL;
- _size = 0;
-}
-
-
-/** Add an element to the list.
- *
- * This method can be called while another thread is reading the list.
- * Realtime safe.
- */
-template <typename T>
-void
-List<T>::push_back(ListNode<T>* const ln)
-{
- assert(ln != NULL);
-
- ln->next(NULL);
- // FIXME: atomicity? relevant?
- if (_head == NULL) {
- ln->prev(NULL);
- _head = _tail = ln;
- } else {
- ln->prev(_tail);
- _tail->next(ln);
- _tail = ln;
- }
- ++_size;
-}
-
-
-/** Remove an element from the list.
- *
- * This function is realtime safe - it is the caller's responsibility to
- * delete the returned ListNode, or there will be a leak.
- */
-template <typename T>
-ListNode<T>*
-List<T>::remove(const T elem)
-{
- // FIXME: atomicity?
- ListNode<T>* n = _head;
- while (n != NULL) {
- if (n->elem() == elem)
- break;
- n = n->next();
- }
- if (n != NULL) {
- if (n == _head) _head = _head->next();
- if (n == _tail) _tail = _tail->prev();
- if (n->prev() != NULL)
- n->prev()->next(n->next());
- if (n->next() != NULL)
- n->next()->prev(n->prev());
- --_size;
- if (_size == 0) _head = _tail = NULL; // FIXME: Shouldn't be necessary
- return n;
- }
- return NULL;
-}
-
-
-/** Remove an element from the list using an iterator.
- *
- * This function is realtime safe - it is the caller's responsibility to
- * delete the returned ListNode, or there will be a leak.
- */
-template <typename T>
-ListNode<T>*
-List<T>::remove(const iterator iter)
-{
- ListNode<T>* n = iter._listnode;
- if (n != NULL) {
- if (n == _head) _head = _head->next();
- if (n == _tail) _tail = _tail->prev();
- if (n->prev() != NULL)
- n->prev()->next(n->next());
- if (n->next() != NULL)
- n->next()->prev(n->prev());
- --_size;
- if (_size == 0) _head = _tail = NULL; // FIXME: Shouldn't be necessary
- return n;
- }
- return NULL;
-}
-
-
-//// Iterator stuff ////
-
-template <typename T>
-List<T>::iterator::iterator(List<T>* list)
-: _list(list),
- _listnode(NULL),
- _next(NULL)
-{
-}
-
-
-template <typename T>
-T&
-List<T>::iterator::operator*()
-{
- assert(_listnode != NULL);
- return _listnode->elem();
-}
-
-
-template <typename T>
-inline typename List<T>::iterator&
-List<T>::iterator::operator++()
-{
- assert(_listnode != NULL);
- _listnode = _next;
- if (_next != NULL)
- _next = _next->next();
- else
- _next = NULL;
-
- return *this;
-}
-
-
-template <typename T>
-inline bool
-List<T>::iterator::operator!=(const iterator& iter) const
-{
- return (_listnode != iter._listnode);
-}
-
-
-template <typename T>
-inline bool
-List<T>::iterator::operator!=(const const_iterator& iter) const
-{
- return (_listnode != iter._listnode);
-}
-
-
-template <typename T>
-inline typename List<T>::iterator
-List<T>::begin()
-{
- typename List<T>::iterator iter(this);
- iter._listnode = _head;
- if (_head != NULL)
- iter._next = _head->next();
- else
- iter._next = NULL;
- return iter;
-}
-
-
-template <typename T>
-inline const typename List<T>::iterator
-List<T>::end() const
-{
- /*typename List<T>::iterator iter(this);
- iter._listnode = NULL;
- iter._next = NULL;
- return iter;*/
- return _end_iter;
-}
-
-
-
-/// const_iterator stuff ///
-
-
-template <typename T>
-List<T>::const_iterator::const_iterator(const List<T>* const list)
-: _list(list),
- _listnode(NULL),
- _next(NULL)
-{
-}
-
-
-template <typename T>
-const T&
-List<T>::const_iterator::operator*()
-{
- assert(_listnode != NULL);
- return _listnode->elem();
-}
-
-
-template <typename T>
-inline typename List<T>::const_iterator&
-List<T>::const_iterator::operator++()
-{
- assert(_listnode != NULL);
- _listnode = _next;
- if (_next != NULL)
- _next = _next->next();
- else
- _next = NULL;
-
- return *this;
-}
-
-
-template <typename T>
-inline bool
-List<T>::const_iterator::operator!=(const const_iterator& iter) const
-{
- return (_listnode != iter._listnode);
-}
-
-
-template <typename T>
-inline bool
-List<T>::const_iterator::operator!=(const iterator& iter) const
-{
- return (_listnode != iter._listnode);
-}
-
-
-template <typename T>
-inline typename List<T>::const_iterator
-List<T>::begin() const
-{
- typename List<T>::const_iterator iter(this);
- iter._listnode = _head;
- if (_head != NULL)
- iter._next = _head->next();
- else
- iter._next = NULL;
- return iter;
-}
-
-#if 0
-template <typename T>
-inline typename List<T>::const_iterator
-List<T>::end() const
-{
- /*typename List<T>::const_iterator iter(this);
- iter._listnode = NULL;
- iter._next = NULL;
- return iter;*/
- return _const_end_iter;
-}
-#endif
-
-#endif // LIST_H
diff --git a/src/libs/engine/Maid.cpp b/src/libs/engine/Maid.cpp
index 583db51f..d745e587 100644
--- a/src/libs/engine/Maid.cpp
+++ b/src/libs/engine/Maid.cpp
@@ -16,7 +16,7 @@
*/
#include "Maid.h"
-#include "MaidObject.h"
+#include <raul/Deletable.h>
Maid::Maid(size_t size)
@@ -36,7 +36,7 @@ Maid::~Maid()
void
Maid::cleanup()
{
- MaidObject* obj = NULL;
+ Raul::Deletable* obj = NULL;
while (!_objects.empty()) {
obj = _objects.front();
diff --git a/src/libs/engine/Maid.h b/src/libs/engine/Maid.h
index 38d8d86c..038c0a5e 100644
--- a/src/libs/engine/Maid.h
+++ b/src/libs/engine/Maid.h
@@ -20,7 +20,7 @@
#include <boost/utility.hpp>
#include "raul/SRSWQueue.h"
-#include "MaidObject.h"
+#include <raul/Deletable.h>
/** Explicitly driven garbage collector.
@@ -40,19 +40,19 @@ public:
Maid(size_t size);
~Maid();
- inline void push(MaidObject* obj);
+ inline void push(Raul::Deletable* obj);
void cleanup();
private:
- Raul::SRSWQueue<MaidObject*> _objects;
+ Raul::SRSWQueue<Raul::Deletable*> _objects;
};
/** Push an event to be deleted. Realtime safe.
*/
inline void
-Maid::push(MaidObject* obj)
+Maid::push(Raul::Deletable* obj)
{
if (obj != NULL)
_objects.push(obj);
diff --git a/src/libs/engine/MaidObject.h b/src/libs/engine/MaidObject.h
deleted file mode 100644
index f646832d..00000000
--- a/src/libs/engine/MaidObject.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* This file is part of Ingen.
- * Copyright (C) 2007 Dave Robillard <http://drobilla.net>
- *
- * Ingen is free software; you can redistribute it and/or modify it under the
- * terms of the GNU General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option) any later
- * version.
- *
- * Ingen is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef MAIDOBJECT_H
-#define MAIDOBJECT_H
-
-#include <boost/utility.hpp>
-
-
-/** An object that can be passed to the maid for deletion.
- *
- * \ingroup engine
- */
-class MaidObject : boost::noncopyable
-{
-public:
- MaidObject() {}
- virtual ~MaidObject() {}
-};
-
-
-#endif // MAIDOBJECT_H
diff --git a/src/libs/engine/Makefile.am b/src/libs/engine/Makefile.am
index 3eb30f9d..c2a6edf4 100644
--- a/src/libs/engine/Makefile.am
+++ b/src/libs/engine/Makefile.am
@@ -66,14 +66,11 @@ libingen_la_SOURCES = \
GraphObject.cpp \
Maid.h \
Maid.cpp \
- MaidObject.h \
Tree.h \
TreeImplementation.h \
PluginLibrary.h \
Plugin.h \
Plugin.cpp \
- Array.h \
- List.h \
PostProcessor.h \
PostProcessor.cpp \
Connection.h \
diff --git a/src/libs/engine/MidiControlNode.cpp b/src/libs/engine/MidiControlNode.cpp
index 4c9f8293..82db9b06 100644
--- a/src/libs/engine/MidiControlNode.cpp
+++ b/src/libs/engine/MidiControlNode.cpp
@@ -33,7 +33,7 @@ MidiControlNode::MidiControlNode(const string& path, size_t poly, Patch* parent,
: InternalNode(new Plugin(Plugin::Internal, "ingen:control_node"), path, 1, parent, srate, buffer_size),
_learning(false)
{
- _ports = new Array<Port*>(7);
+ _ports = new Raul::Array<Port*>(7);
_midi_in_port = new InputPort<MidiMessage>(this, "MIDI_In", 0, 1, DataType::MIDI, _buffer_size);
_ports->at(0) = _midi_in_port;
diff --git a/src/libs/engine/MidiDriver.h b/src/libs/engine/MidiDriver.h
index fba99177..1458aca5 100644
--- a/src/libs/engine/MidiDriver.h
+++ b/src/libs/engine/MidiDriver.h
@@ -18,6 +18,7 @@
#ifndef MIDIDRIVER_H
#define MIDIDRIVER_H
+#include "types.h"
#include "Driver.h"
#include <iostream>
using std::cout; using std::endl;
diff --git a/src/libs/engine/MidiNoteNode.cpp b/src/libs/engine/MidiNoteNode.cpp
index ac84a19e..d0c14e23 100644
--- a/src/libs/engine/MidiNoteNode.cpp
+++ b/src/libs/engine/MidiNoteNode.cpp
@@ -18,11 +18,11 @@
#include "MidiNoteNode.h"
#include <cmath>
#include <iostream>
+#include <raul/Array.h>
#include "MidiMessage.h"
#include "InputPort.h"
#include "OutputPort.h"
#include "Plugin.h"
-#include "Array.h"
#include "AudioDriver.h"
#include "util.h"
#include "midi.h"
@@ -38,7 +38,7 @@ MidiNoteNode::MidiNoteNode(const string& path, size_t poly, Patch* parent, Sampl
_voices(new Voice[poly]),
_sustain(false)
{
- _ports = new Array<Port*>(5);
+ _ports = new Raul::Array<Port*>(5);
_midi_in_port = new InputPort<MidiMessage>(this, "MIDI_In", 0, 1, DataType::MIDI, _buffer_size);
_ports->at(0) = _midi_in_port;
diff --git a/src/libs/engine/MidiTriggerNode.cpp b/src/libs/engine/MidiTriggerNode.cpp
index b618ccd7..3a7d1762 100644
--- a/src/libs/engine/MidiTriggerNode.cpp
+++ b/src/libs/engine/MidiTriggerNode.cpp
@@ -29,7 +29,7 @@ namespace Ingen {
MidiTriggerNode::MidiTriggerNode(const string& path, size_t poly, Patch* parent, SampleRate srate, size_t buffer_size)
: InternalNode(new Plugin(Plugin::Internal, "ingen:trigger_node"), path, 1, parent, srate, buffer_size)
{
- _ports = new Array<Port*>(5);
+ _ports = new Raul::Array<Port*>(5);
_midi_in_port = new InputPort<MidiMessage>(this, "MIDI_In", 0, 1, DataType::MIDI, _buffer_size);
_ports->at(0) = _midi_in_port;
diff --git a/src/libs/engine/Node.h b/src/libs/engine/Node.h
index 4dc28ffc..852751fb 100644
--- a/src/libs/engine/Node.h
+++ b/src/libs/engine/Node.h
@@ -19,13 +19,14 @@
#define NODE_H
#include <string>
+#include <raul/Array.h>
#include "types.h"
#include "GraphObject.h"
-#include "Array.h"
+
using std::string;
-template <typename T> class List;
+namespace Raul { template <typename T> class List; }
namespace Ingen {
@@ -75,7 +76,7 @@ public:
virtual void set_port_buffer(size_t voice, size_t port_num, void* buf) = 0;
// FIXME: Only used by client senders. Remove?
- virtual const Array<Port*>& ports() const = 0;
+ virtual const Raul::Array<Port*>& ports() const = 0;
virtual size_t num_ports() const = 0;
virtual size_t poly() const = 0;
@@ -87,14 +88,14 @@ public:
/** Nodes that are connected to this Node's inputs.
* (This Node depends on them)
*/
- virtual List<Node*>* providers() = 0;
- virtual void providers(List<Node*>* l) = 0;
+ virtual Raul::List<Node*>* providers() = 0;
+ virtual void providers(Raul::List<Node*>* l) = 0;
/** Nodes are are connected to this Node's outputs.
* (They depend on this Node)
*/
- virtual List<Node*>* dependants() = 0;
- virtual void dependants(List<Node*>* l) = 0;
+ virtual Raul::List<Node*>* dependants() = 0;
+ virtual void dependants(Raul::List<Node*>* l) = 0;
/** The Patch this Node belongs to. */
virtual Patch* parent_patch() const = 0;
diff --git a/src/libs/engine/NodeBase.cpp b/src/libs/engine/NodeBase.cpp
index 9f212c70..7f9fe23b 100644
--- a/src/libs/engine/NodeBase.cpp
+++ b/src/libs/engine/NodeBase.cpp
@@ -19,12 +19,12 @@
#include <cassert>
#include <iostream>
#include <stdint.h>
+#include <raul/List.h>
+#include <raul/Array.h>
#include "util.h"
-#include "Array.h"
#include "Plugin.h"
#include "ClientBroadcaster.h"
#include "Port.h"
-#include "List.h"
#include "Patch.h"
#include "ObjectStore.h"
@@ -42,8 +42,8 @@ NodeBase::NodeBase(const Plugin* plugin, const string& name, size_t poly, Patch*
_activated(false),
_ports(NULL),
_traversed(false),
- _providers(new List<Node*>()),
- _dependants(new List<Node*>())
+ _providers(new Raul::List<Node*>()),
+ _dependants(new Raul::List<Node*>())
{
assert(_plugin);
assert(_poly > 0);
diff --git a/src/libs/engine/NodeBase.h b/src/libs/engine/NodeBase.h
index 3782c9eb..e78aaab2 100644
--- a/src/libs/engine/NodeBase.h
+++ b/src/libs/engine/NodeBase.h
@@ -71,13 +71,13 @@ public:
bool traversed() const { return _traversed; }
void traversed(bool b) { _traversed = b; }
- const Array<Port*>& ports() const { return *_ports; }
+ const Raul::Array<Port*>& ports() const { return *_ports; }
- virtual List<Node*>* providers() { return _providers; }
- virtual void providers(List<Node*>* l) { _providers = l; }
+ virtual Raul::List<Node*>* providers() { return _providers; }
+ virtual void providers(Raul::List<Node*>* l) { _providers = l; }
- virtual List<Node*>* dependants() { return _dependants; }
- virtual void dependants(List<Node*>* l) { _dependants = l; }
+ virtual Raul::List<Node*>* dependants() { return _dependants; }
+ virtual void dependants(Raul::List<Node*>* l) { _dependants = l; }
virtual const Plugin* plugin() const { return _plugin; }
@@ -95,11 +95,11 @@ protected:
size_t _buffer_size;
bool _activated;
- Array<Port*>* _ports; ///< Access in audio thread only
+ Raul::Array<Port*>* _ports; ///< Access in audio thread only
bool _traversed; ///< Flag for process order algorithm
- List<Node*>* _providers; ///< Nodes connected to this one's input ports
- List<Node*>* _dependants; ///< Nodes this one's output ports are connected to
+ Raul::List<Node*>* _providers; ///< Nodes connected to this one's input ports
+ Raul::List<Node*>* _dependants; ///< Nodes this one's output ports are connected to
};
diff --git a/src/libs/engine/OSCClientSender.cpp b/src/libs/engine/OSCClientSender.cpp
index 52c7099c..ee4653e5 100644
--- a/src/libs/engine/OSCClientSender.cpp
+++ b/src/libs/engine/OSCClientSender.cpp
@@ -259,7 +259,7 @@ void OSCClientSender::new_node(string plugin_uri,
/*
- const Array<Port*>& ports = node->ports();
+ const Raul::Array<Port*>& ports = node->ports();
Port* port;
PortInfo* info;
for (size_t j=0; j < ports.size(); ++j) {
diff --git a/src/libs/engine/ObjectSender.cpp b/src/libs/engine/ObjectSender.cpp
index 8d8fc769..ce480316 100644
--- a/src/libs/engine/ObjectSender.cpp
+++ b/src/libs/engine/ObjectSender.cpp
@@ -36,7 +36,7 @@ ObjectSender::send_patch(ClientInterface* client, const Patch* patch, bool recur
if (recursive) {
// Send nodes
- for (List<Node*>::const_iterator j = patch->nodes().begin();
+ for (Raul::List<Node*>::const_iterator j = patch->nodes().begin();
j != patch->nodes().end(); ++j) {
const Node* const node = (*j);
@@ -52,7 +52,7 @@ ObjectSender::send_patch(ClientInterface* client, const Patch* patch, bool recur
}
// Send connections
- for (List<Connection*>::const_iterator j = patch->connections().begin();
+ for (Raul::List<Connection*>::const_iterator j = patch->connections().begin();
j != patch->connections().end(); ++j) {
client->connection((*j)->src_port()->path(), (*j)->dst_port()->path());
@@ -97,7 +97,7 @@ ObjectSender::send_node(ClientInterface* client, const Node* node, bool recursiv
// FIXME: bundleify
//client->bundle_begin();
- const Array<Port*>& ports = node->ports();
+ const Raul::Array<Port*>& ports = node->ports();
client->new_node(node->plugin()->uri(), node->path(), polyphonic, ports.size());
diff --git a/src/libs/engine/ObjectStore.cpp b/src/libs/engine/ObjectStore.cpp
index af7f219c..709e3823 100644
--- a/src/libs/engine/ObjectStore.cpp
+++ b/src/libs/engine/ObjectStore.cpp
@@ -15,12 +15,12 @@
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#include <raul/List.h>
+#include <raul/Path.h>
#include "ObjectStore.h"
#include "Patch.h"
#include "Node.h"
#include "Port.h"
-#include "List.h"
-#include "raul/Path.h"
#include "Tree.h"
namespace Ingen {
@@ -87,7 +87,7 @@ ObjectStore::add(TreeNode<GraphObject*>* tn)
/** Remove a patch from the store.
*
- * It it the caller's responsibility to delete the returned ListNode.
+ * It it the caller's responsibility to delete the returned Raul::ListNode.
*
* @returns TreeNode containing object removed on success, NULL if not found.
*/
diff --git a/src/libs/engine/Patch.cpp b/src/libs/engine/Patch.cpp
index c8ccc59c..8ebb35e6 100644
--- a/src/libs/engine/Patch.cpp
+++ b/src/libs/engine/Patch.cpp
@@ -51,12 +51,12 @@ Patch::~Patch()
{
assert(!_activated);
- for (List<Connection*>::iterator i = _connections.begin(); i != _connections.end(); ++i) {
+ for (Raul::List<Connection*>::iterator i = _connections.begin(); i != _connections.end(); ++i) {
delete (*i);
delete _connections.remove(i);
}
- for (List<Node*>::iterator i = _nodes.begin(); i != _nodes.end(); ++i) {
+ for (Raul::List<Node*>::iterator i = _nodes.begin(); i != _nodes.end(); ++i) {
assert(!(*i)->activated());
delete (*i);
delete _nodes.remove(i);
@@ -71,7 +71,7 @@ Patch::activate()
{
NodeBase::activate();
- for (List<Node*>::iterator i = _nodes.begin(); i != _nodes.end(); ++i)
+ for (Raul::List<Node*>::iterator i = _nodes.begin(); i != _nodes.end(); ++i)
(*i)->activate();
assert(_activated);
@@ -85,7 +85,7 @@ Patch::deactivate()
NodeBase::deactivate();
- for (List<Node*>::iterator i = _nodes.begin(); i != _nodes.end(); ++i) {
+ for (Raul::List<Node*>::iterator i = _nodes.begin(); i != _nodes.end(); ++i) {
if ((*i)->activated())
(*i)->deactivate();
assert(!(*i)->activated());
@@ -99,11 +99,11 @@ void
Patch::disable()
{
// Write output buffers to 0
- /*for (List<InternalNode*>::iterator i = _bridge_nodes.begin(); i != _bridge_nodes.end(); ++i) {
+ /*for (Raul::List<InternalNode*>::iterator i = _bridge_nodes.begin(); i != _bridge_nodes.end(); ++i) {
assert((*i)->as_port() != NULL);
if ((*i)->as_port()->port_info()->is_output())
(*i)->as_port()->clear_buffers();*/
- for (List<Port*>::iterator i = _output_ports.begin(); i != _output_ports.end(); ++i)
+ for (Raul::List<Port*>::iterator i = _output_ports.begin(); i != _output_ports.end(); ++i)
(*i)->clear_buffers();
_process = false;
@@ -123,7 +123,7 @@ Patch::process(SampleCount nframes, FrameTime start, FrameTime end)
// FIXME: This is far too slow, too much checking every cycle
// Prepare input ports for nodes to consume
- for (List<Port*>::iterator i = _input_ports.begin(); i != _input_ports.end(); ++i)
+ for (Raul::List<Port*>::iterator i = _input_ports.begin(); i != _input_ports.end(); ++i)
(*i)->process(nframes, start, end);
// Run all nodes (consume input ports)
@@ -135,7 +135,7 @@ Patch::process(SampleCount nframes, FrameTime start, FrameTime end)
}
// Prepare output ports (for caller to consume)
- for (List<Port*>::iterator i = _output_ports.begin(); i != _output_ports.end(); ++i)
+ for (Raul::List<Port*>::iterator i = _output_ports.begin(); i != _output_ports.end(); ++i)
(*i)->process(nframes, start, end);
}
@@ -146,7 +146,7 @@ Patch::set_buffer_size(size_t size)
NodeBase::set_buffer_size(size);
assert(_buffer_size == size);
- for (List<Node*>::iterator j = _nodes.begin(); j != _nodes.end(); ++j)
+ for (Raul::List<Node*>::iterator j = _nodes.begin(); j != _nodes.end(); ++j)
(*j)->set_buffer_size(size);
}
@@ -158,7 +158,7 @@ Patch::add_to_store(ObjectStore* store)
NodeBase::add_to_store(store);
// Add nodes
- for (List<Node*>::iterator j = _nodes.begin(); j != _nodes.end(); ++j)
+ for (Raul::List<Node*>::iterator j = _nodes.begin(); j != _nodes.end(); ++j)
(*j)->add_to_store(store);
}
@@ -170,7 +170,7 @@ Patch::remove_from_store()
NodeBase::remove_from_store();
// Remove nodes
- for (List<Node*>::iterator j = _nodes.begin(); j != _nodes.end(); ++j)
+ for (Raul::List<Node*>::iterator j = _nodes.begin(); j != _nodes.end(); ++j)
(*j)->remove_from_store();
}
@@ -179,7 +179,7 @@ Patch::remove_from_store()
void
-Patch::add_node(ListNode<Node*>* ln)
+Patch::add_node(Raul::ListNode<Node*>* ln)
{
assert(ln != NULL);
assert(ln->elem() != NULL);
@@ -193,10 +193,10 @@ Patch::add_node(ListNode<Node*>* ln)
/** Remove a node.
* Realtime Safe. Preprocessing thread.
*/
-ListNode<Node*>*
+Raul::ListNode<Node*>*
Patch::remove_node(const string& name)
{
- for (List<Node*>::iterator i = _nodes.begin(); i != _nodes.end(); ++i)
+ for (Raul::List<Node*>::iterator i = _nodes.begin(); i != _nodes.end(); ++i)
if ((*i)->name() == name)
return _nodes.remove(i);
@@ -206,12 +206,12 @@ Patch::remove_node(const string& name)
/** Remove a connection. Realtime safe.
*/
-ListNode<Connection*>*
+Raul::ListNode<Connection*>*
Patch::remove_connection(const Port* src_port, const Port* dst_port)
{
bool found = false;
- ListNode<Connection*>* connection = NULL;
- for (List<Connection*>::iterator i = _connections.begin(); i != _connections.end(); ++i) {
+ Raul::ListNode<Connection*>* connection = NULL;
+ for (Raul::List<Connection*>::iterator i = _connections.begin(); i != _connections.end(); ++i) {
if ((*i)->src_port() == src_port && (*i)->dst_port() == dst_port) {
connection = _connections.remove(i);
found = true;
@@ -227,12 +227,12 @@ Patch::remove_connection(const Port* src_port, const Port* dst_port)
#if 0
/** Remove a bridge_node. Realtime safe.
*/
-ListNode<InternalNode*>*
+Raul::ListNode<InternalNode*>*
Patch::remove_bridge_node(const InternalNode* node)
{
bool found = false;
- ListNode<InternalNode*>* bridge_node = NULL;
- for (List<InternalNode*>::iterator i = _bridge_nodes.begin(); i != _bridge_nodes.end(); ++i) {
+ Raul::ListNode<InternalNode*>* bridge_node = NULL;
+ for (Raul::List<InternalNode*>::iterator i = _bridge_nodes.begin(); i != _bridge_nodes.end(); ++i) {
if ((*i) == node) {
bridge_node = _bridge_nodes.remove(i);
found = true;
@@ -288,14 +288,14 @@ Patch::create_port(const string& name, DataType type, size_t buffer_size, bool i
*
* Realtime safe. Preprocessing thread only.
*/
-ListNode<Port*>*
+Raul::ListNode<Port*>*
Patch::remove_port(const string& name)
{
assert(ThreadManager::current_thread_id() == THREAD_PRE_PROCESS);
bool found = false;
- ListNode<Port*>* ret = NULL;
- for (List<Port*>::iterator i = _input_ports.begin(); i != _input_ports.end(); ++i) {
+ Raul::ListNode<Port*>* ret = NULL;
+ for (Raul::List<Port*>::iterator i = _input_ports.begin(); i != _input_ports.end(); ++i) {
if ((*i)->name() == name) {
ret = _input_ports.remove(i);
found = true;
@@ -303,7 +303,7 @@ Patch::remove_port(const string& name)
}
if (!found)
- for (List<Port*>::iterator i = _output_ports.begin(); i != _output_ports.end(); ++i) {
+ for (Raul::List<Port*>::iterator i = _output_ports.begin(); i != _output_ports.end(); ++i) {
if ((*i)->name() == name) {
ret = _output_ports.remove(i);
found = true;
@@ -317,19 +317,19 @@ Patch::remove_port(const string& name)
}
-Array<Port*>*
+Raul::Array<Port*>*
Patch::build_ports_array() const
{
assert(ThreadManager::current_thread_id() == THREAD_PRE_PROCESS);
- Array<Port*>* const result = new Array<Port*>(_input_ports.size() + _output_ports.size());
+ Raul::Array<Port*>* const result = new Raul::Array<Port*>(_input_ports.size() + _output_ports.size());
size_t i = 0;
- for (List<Port*>::const_iterator p = _input_ports.begin(); p != _input_ports.end(); ++p,++i)
+ for (Raul::List<Port*>::const_iterator p = _input_ports.begin(); p != _input_ports.end(); ++p,++i)
result->at(i) = *p;
- for (List<Port*>::const_iterator p = _output_ports.begin(); p != _output_ports.end(); ++p,++i)
+ for (Raul::List<Port*>::const_iterator p = _output_ports.begin(); p != _output_ports.end(); ++p,++i)
result->at(i) = *p;
return result;
@@ -346,24 +346,24 @@ Patch::build_ports_array() const
*
* Not realtime safe.
*/
-Array<Node*>*
+Raul::Array<Node*>*
Patch::build_process_order() const
{
assert(ThreadManager::current_thread_id() == THREAD_PRE_PROCESS);
cerr << "*********** Building process order for " << path() << endl;
- Array<Node*>* const process_order = new Array<Node*>(_nodes.size(), NULL);
+ Raul::Array<Node*>* const process_order = new Raul::Array<Node*>(_nodes.size(), NULL);
// FIXME: tweak algorithm so it just ends up like this and save the cost of iteration?
- for (List<Node*>::const_iterator i = _nodes.begin(); i != _nodes.end(); ++i)
+ for (Raul::List<Node*>::const_iterator i = _nodes.begin(); i != _nodes.end(); ++i)
(*i)->traversed(false);
// Traverse backwards starting at outputs
- //for (List<Port*>::const_iterator p = _output_ports.begin(); p != _output_ports.end(); ++p) {
+ //for (Raul::List<Port*>::const_iterator p = _output_ports.begin(); p != _output_ports.end(); ++p) {
/*const Port* const port = (*p);
- for (List<Connection*>::const_iterator c = port->connections().begin();
+ for (Raul::List<Connection*>::const_iterator c = port->connections().begin();
c != port->connections().end(); ++c) {
const Connection* const connection = (*c);
assert(connection->dst_port() == port);
@@ -373,7 +373,7 @@ Patch::build_process_order() const
}*/
//}
- for (List<Node*>::const_iterator i = _nodes.begin(); i != _nodes.end(); ++i) {
+ for (Raul::List<Node*>::const_iterator i = _nodes.begin(); i != _nodes.end(); ++i) {
Node* const node = (*i);
// Either a sink or connected to our output ports:
if ( ( ! node->traversed()) && node->dependants()->size() == 0)
@@ -382,7 +382,7 @@ Patch::build_process_order() const
// Add any (disjoint) nodes that weren't hit by the traversal
// FIXME: this shouldn't be necessary
- /*for (List<Node*>::const_iterator i = _nodes.begin(); i != _nodes.end(); ++i) {
+ /*for (Raul::List<Node*>::const_iterator i = _nodes.begin(); i != _nodes.end(); ++i) {
Node* const node = (*i);
if ( ! node->traversed()) {
process_order->push_back(*i);
@@ -417,7 +417,7 @@ Patch::set_path(const Path& new_path)
const Path old_path = path();
// Update nodes
- for (List<Node*>::iterator i = _nodes.begin(); i != _nodes.end(); ++i)
+ for (Raul::List<Node*>::iterator i = _nodes.begin(); i != _nodes.end(); ++i)
(*i)->set_path(new_path.base() + (*i)->name());
// Update self
diff --git a/src/libs/engine/Patch.h b/src/libs/engine/Patch.h
index 7fc3a1bb..55a2be83 100644
--- a/src/libs/engine/Patch.h
+++ b/src/libs/engine/Patch.h
@@ -20,9 +20,9 @@
#include <cstdlib>
#include <string>
+#include <raul/List.h>
#include "NodeBase.h"
#include "Plugin.h"
-#include "List.h"
#include "DataType.h"
using std::string;
@@ -68,33 +68,33 @@ public:
// Patch specific stuff not inherited from Node
- void add_node(ListNode<Node*>* tn);
- ListNode<Node*>* remove_node(const string& name);
+ void add_node(Raul::ListNode<Node*>* tn);
+ Raul::ListNode<Node*>* remove_node(const string& name);
- List<Node*>& nodes() { return _nodes; }
- List<Connection*>& connections() { return _connections; }
+ Raul::List<Node*>& nodes() { return _nodes; }
+ Raul::List<Connection*>& connections() { return _connections; }
- const List<Node*>& nodes() const { return _nodes; }
- const List<Connection*>& connections() const { return _connections; }
+ const Raul::List<Node*>& nodes() const { return _nodes; }
+ const Raul::List<Connection*>& connections() const { return _connections; }
size_t num_ports() const;
Port* create_port(const string& name, DataType type, size_t buffer_size, bool is_output);
- void add_input(ListNode<Port*>* port) { _input_ports.push_back(port); } ///< Preprocesser thread
- void add_output(ListNode<Port*>* port) { _output_ports.push_back(port); } ///< Preprocessor thread
- ListNode<Port*>* remove_port(const string& name);
+ void add_input(Raul::ListNode<Port*>* port) { _input_ports.push_back(port); } ///< Preprocesser thread
+ void add_output(Raul::ListNode<Port*>* port) { _output_ports.push_back(port); } ///< Preprocessor thread
+ Raul::ListNode<Port*>* remove_port(const string& name);
- void add_connection(ListNode<Connection*>* c) { _connections.push_back(c); }
- ListNode<Connection*>* remove_connection(const Port* src_port, const Port* dst_port);
+ void add_connection(Raul::ListNode<Connection*>* c) { _connections.push_back(c); }
+ Raul::ListNode<Connection*>* remove_connection(const Port* src_port, const Port* dst_port);
- Array<Node*>* process_order() { return _process_order; }
- void process_order(Array<Node*>* po) { _process_order = po; }
+ Raul::Array<Node*>* process_order() { return _process_order; }
+ void process_order(Raul::Array<Node*>* po) { _process_order = po; }
- Array<Port*>* external_ports() { return _ports; }
- void external_ports(Array<Port*>* pa) { _ports = pa; }
+ Raul::Array<Port*>* external_ports() { return _ports; }
+ void external_ports(Raul::Array<Port*>* pa) { _ports = pa; }
- Array<Node*>* build_process_order() const;
- Array<Port*>* build_ports_array() const;
+ Raul::Array<Node*>* build_process_order() const;
+ Raul::Array<Port*>* build_ports_array() const;
/** Whether to run this patch's DSP bits in the audio thread */
bool enabled() const { return _process; }
@@ -104,14 +104,14 @@ public:
size_t internal_poly() const { return _internal_poly; }
private:
- inline void build_process_order_recursive(Node* n, Array<Node*>* order) const;
+ inline void build_process_order_recursive(Node* n, Raul::Array<Node*>* order) const;
size_t _internal_poly;
- Array<Node*>* _process_order; ///< Accessed in audio thread only
- List<Connection*> _connections; ///< Accessed in audio thread only
- List<Port*> _input_ports; ///< Accessed in preprocessing thread only
- List<Port*> _output_ports; ///< Accessed in preprocessing thread only
- List<Node*> _nodes; ///< Accessed in preprocessing thread only
+ Raul::Array<Node*>* _process_order; ///< Accessed in audio thread only
+ Raul::List<Connection*> _connections; ///< Accessed in audio thread only
+ Raul::List<Port*> _input_ports; ///< Accessed in preprocessing thread only
+ Raul::List<Port*> _output_ports; ///< Accessed in preprocessing thread only
+ Raul::List<Node*> _nodes; ///< Accessed in preprocessing thread only
bool _process;
};
@@ -119,13 +119,13 @@ private:
/** Private helper for build_process_order */
inline void
-Patch::build_process_order_recursive(Node* n, Array<Node*>* order) const
+Patch::build_process_order_recursive(Node* n, Raul::Array<Node*>* order) const
{
if (n == NULL || n->traversed()) return;
n->traversed(true);
assert(order != NULL);
- for (List<Node*>::iterator i = n->providers()->begin(); i != n->providers()->end(); ++i)
+ for (Raul::List<Node*>::iterator i = n->providers()->begin(); i != n->providers()->end(); ++i)
if ( ! (*i)->traversed() )
build_process_order_recursive((*i), order);
diff --git a/src/libs/engine/Tree.h b/src/libs/engine/Tree.h
index 9c03070f..e2ef785b 100644
--- a/src/libs/engine/Tree.h
+++ b/src/libs/engine/Tree.h
@@ -21,7 +21,7 @@
#include <string>
#include <cassert>
#include <boost/utility.hpp>
-#include "MaidObject.h"
+#include <raul/Deletable.h>
using std::string;
template<typename T> class Tree;
@@ -30,7 +30,7 @@ template<typename T> class Tree;
/** A node in a Tree.
*/
template <typename T>
-class TreeNode : public MaidObject
+class TreeNode : public Raul::Deletable
{
public:
TreeNode(const string& key)
diff --git a/src/libs/engine/TypedPort.h b/src/libs/engine/TypedPort.h
index 8c9ab149..2dc687a5 100644
--- a/src/libs/engine/TypedPort.h
+++ b/src/libs/engine/TypedPort.h
@@ -20,7 +20,7 @@
#include <string>
#include "types.h"
-#include "Array.h"
+#include <raul/Array.h>
#include "Port.h"
#include "Buffer.h"
@@ -67,7 +67,7 @@ protected:
bool _fixed_buffers;
- Array<Buffer<T>*> _buffers;
+ Raul::Array<Buffer<T>*> _buffers;
};
diff --git a/src/libs/engine/events/AddNodeEvent.cpp b/src/libs/engine/events/AddNodeEvent.cpp
index 485bd1cd..146ca3b6 100644
--- a/src/libs/engine/events/AddNodeEvent.cpp
+++ b/src/libs/engine/events/AddNodeEvent.cpp
@@ -94,7 +94,7 @@ AddNodeEvent::pre_process()
// This can be done here because the audio thread doesn't touch the
// node tree - just the process order array
- _patch->add_node(new ListNode<Node*>(_node));
+ _patch->add_node(new Raul::ListNode<Node*>(_node));
_node->add_to_store(_engine.object_store());
// FIXME: not really necessary to build process order since it's not connected,
diff --git a/src/libs/engine/events/AddNodeEvent.h b/src/libs/engine/events/AddNodeEvent.h
index 8ac88b08..6b68f627 100644
--- a/src/libs/engine/events/AddNodeEvent.h
+++ b/src/libs/engine/events/AddNodeEvent.h
@@ -23,7 +23,7 @@
#include <string>
using std::string;
-template <typename T> class Array;
+namespace Raul { template <typename T> class Array; }
template<typename T> class TreeNode;
namespace Ingen {
@@ -71,7 +71,7 @@ private:
bool _poly;
Patch* _patch;
Node* _node;
- Array<Node*>* _process_order; ///< Patch's new process order
+ Raul::Array<Node*>* _process_order; ///< Patch's new process order
bool _node_already_exists;
};
diff --git a/src/libs/engine/events/AddPortEvent.cpp b/src/libs/engine/events/AddPortEvent.cpp
index 74345df5..c775fe04 100644
--- a/src/libs/engine/events/AddPortEvent.cpp
+++ b/src/libs/engine/events/AddPortEvent.cpp
@@ -31,10 +31,10 @@
#include "Port.h"
#include "AudioDriver.h"
#include "MidiDriver.h"
-#include "List.h"
+#include <raul/List.h>
#include "Driver.h"
#include "DuplexPort.h"
-#include "Array.h"
+#include <raul/Array.h>
namespace Ingen {
@@ -97,14 +97,14 @@ AddPortEvent::pre_process()
if (_patch_port) {
if (_is_output)
- _patch->add_output(new ListNode<Port*>(_patch_port));
+ _patch->add_output(new Raul::ListNode<Port*>(_patch_port));
else
- _patch->add_input(new ListNode<Port*>(_patch_port));
+ _patch->add_input(new Raul::ListNode<Port*>(_patch_port));
if (_patch->external_ports())
- _ports_array = new Array<Port*>(old_num_ports + 1, *_patch->external_ports());
+ _ports_array = new Raul::Array<Port*>(old_num_ports + 1, *_patch->external_ports());
else
- _ports_array = new Array<Port*>(old_num_ports + 1, NULL);
+ _ports_array = new Raul::Array<Port*>(old_num_ports + 1, NULL);
_ports_array->at(_patch->num_ports()-1) = _patch_port;
diff --git a/src/libs/engine/events/AddPortEvent.h b/src/libs/engine/events/AddPortEvent.h
index 46c013ca..84302029 100644
--- a/src/libs/engine/events/AddPortEvent.h
+++ b/src/libs/engine/events/AddPortEvent.h
@@ -19,9 +19,9 @@
#define ADDPORTEVENT_H
#include "QueuedEvent.h"
-#include "raul/Path.h"
+#include <raul/Path.h>
+#include <raul/Array.h>
#include "DataType.h"
-#include "Array.h"
#include <string>
using std::string;
@@ -55,7 +55,7 @@ private:
DataType _data_type;
Patch* _patch;
Port* _patch_port;
- Array<Port*>* _ports_array; ///< New (external) ports array for Patch
+ Raul::Array<Port*>* _ports_array; ///< New (external) ports array for Patch
DriverPort* _driver_port; ///< Driver (eg Jack) port if this is a toplevel port
bool _succeeded;
};
diff --git a/src/libs/engine/events/AllNotesOffEvent.cpp b/src/libs/engine/events/AllNotesOffEvent.cpp
index 16e54fc5..6c87e52a 100644
--- a/src/libs/engine/events/AllNotesOffEvent.cpp
+++ b/src/libs/engine/events/AllNotesOffEvent.cpp
@@ -51,7 +51,7 @@ AllNotesOffEvent::execute(SampleCount nframes, FrameTime start, FrameTime end)
_patch = _engine.object_store()->find_patch(_patch_path);
//if (_patch != NULL)
- // for (List<MidiInNode*>::iterator j = _patch->midi_in_nodes().begin(); j != _patch->midi_in_nodes().end(); ++j)
+ // for (Raul::List<MidiInNode*>::iterator j = _patch->midi_in_nodes().begin(); j != _patch->midi_in_nodes().end(); ++j)
// (*j)->all_notes_off(offset);
}
diff --git a/src/libs/engine/events/ClearPatchEvent.cpp b/src/libs/engine/events/ClearPatchEvent.cpp
index d300e2ff..d776df8b 100644
--- a/src/libs/engine/events/ClearPatchEvent.cpp
+++ b/src/libs/engine/events/ClearPatchEvent.cpp
@@ -49,7 +49,7 @@ ClearPatchEvent::pre_process()
_process = _patch->enabled();
- for (List<Node*>::const_iterator i = _patch->nodes().begin(); i != _patch->nodes().end(); ++i)
+ for (Raul::List<Node*>::const_iterator i = _patch->nodes().begin(); i != _patch->nodes().end(); ++i)
(*i)->remove_from_store();
}
@@ -66,7 +66,7 @@ ClearPatchEvent::execute(SampleCount nframes, FrameTime start, FrameTime end)
_patch->disable();
cerr << "FIXME: CLEAR PATCH\n";
- //for (List<Node*>::const_iterator i = _patch->nodes().begin(); i != _patch->nodes().end(); ++i)
+ //for (Raul::List<Node*>::const_iterator i = _patch->nodes().begin(); i != _patch->nodes().end(); ++i)
// (*i)->remove_from_patch();
if (_patch->process_order() != NULL) {
@@ -82,14 +82,14 @@ ClearPatchEvent::post_process()
{
if (_patch != NULL) {
// Delete all nodes
- for (List<Node*>::iterator i = _patch->nodes().begin(); i != _patch->nodes().end(); ++i) {
+ for (Raul::List<Node*>::iterator i = _patch->nodes().begin(); i != _patch->nodes().end(); ++i) {
(*i)->deactivate();
delete *i;
}
_patch->nodes().clear();
// Delete all connections
- for (List<Connection*>::iterator i = _patch->connections().begin(); i != _patch->connections().end(); ++i)
+ for (Raul::List<Connection*>::iterator i = _patch->connections().begin(); i != _patch->connections().end(); ++i)
delete *i;
_patch->connections().clear();
diff --git a/src/libs/engine/events/ClearPatchEvent.h b/src/libs/engine/events/ClearPatchEvent.h
index e50f599e..c3570518 100644
--- a/src/libs/engine/events/ClearPatchEvent.h
+++ b/src/libs/engine/events/ClearPatchEvent.h
@@ -19,8 +19,8 @@
#define CLEARPATCHEVENT_H
#include <string>
+#include <raul/Array.h>
#include "QueuedEvent.h"
-#include "Array.h"
using std::string;
diff --git a/src/libs/engine/events/ConnectionEvent.cpp b/src/libs/engine/events/ConnectionEvent.cpp
index fef7892b..c0dcc18c 100644
--- a/src/libs/engine/events/ConnectionEvent.cpp
+++ b/src/libs/engine/events/ConnectionEvent.cpp
@@ -214,14 +214,14 @@ TypedConnectionEvent<T>::pre_process()
}
_connection = new TypedConnection<T>(_src_port, _dst_port);
- _port_listnode = new ListNode<TypedConnection<T>*>(_connection);
- _patch_listnode = new ListNode<Connection*>(_connection);
+ _port_listnode = new Raul::ListNode<TypedConnection<T>*>(_connection);
+ _patch_listnode = new Raul::ListNode<Connection*>(_connection);
// Need to be careful about patch port connections here and adding a node's
// parent as a dependant/provider, or adding a patch as it's own provider...
if (src_node != dst_node && src_node->parent() == dst_node->parent()) {
- dst_node->providers()->push_back(new ListNode<Node*>(src_node));
- src_node->dependants()->push_back(new ListNode<Node*>(dst_node));
+ dst_node->providers()->push_back(new Raul::ListNode<Node*>(src_node));
+ src_node->dependants()->push_back(new Raul::ListNode<Node*>(dst_node));
}
if (_patch->enabled())
diff --git a/src/libs/engine/events/ConnectionEvent.h b/src/libs/engine/events/ConnectionEvent.h
index b0c81923..79ffeaa3 100644
--- a/src/libs/engine/events/ConnectionEvent.h
+++ b/src/libs/engine/events/ConnectionEvent.h
@@ -24,8 +24,10 @@
#include "types.h"
using std::string;
-template <typename T> class ListNode;
-template <typename T> class Array;
+namespace Raul {
+ template <typename T> class ListNode;
+ template <typename T> class Array;
+}
namespace Ingen {
@@ -92,10 +94,10 @@ private:
InputPort<T>* _dst_port;
Patch* _patch;
- Array<Node*>* _process_order; ///< New process order for Patch
+ Raul::Array<Node*>* _process_order; ///< New process order for Patch
TypedConnection<T>* _connection;
- ListNode<Connection*>* _patch_listnode;
- ListNode<TypedConnection<T>*>* _port_listnode;
+ Raul::ListNode<Connection*>* _patch_listnode;
+ Raul::ListNode<TypedConnection<T>*>* _port_listnode;
bool _succeeded;
};
diff --git a/src/libs/engine/events/CreatePatchEvent.cpp b/src/libs/engine/events/CreatePatchEvent.cpp
index 53837255..96d9c8e3 100644
--- a/src/libs/engine/events/CreatePatchEvent.cpp
+++ b/src/libs/engine/events/CreatePatchEvent.cpp
@@ -72,7 +72,7 @@ CreatePatchEvent::pre_process()
_patch = new Patch(_path.name(), poly, _parent, _engine.audio_driver()->sample_rate(), _engine.audio_driver()->buffer_size(), _poly);
if (_parent != NULL) {
- _parent->add_node(new ListNode<Node*>(_patch));
+ _parent->add_node(new Raul::ListNode<Node*>(_patch));
if (_parent->enabled())
_process_order = _parent->build_process_order();
diff --git a/src/libs/engine/events/CreatePatchEvent.h b/src/libs/engine/events/CreatePatchEvent.h
index 88eb780b..dd492a33 100644
--- a/src/libs/engine/events/CreatePatchEvent.h
+++ b/src/libs/engine/events/CreatePatchEvent.h
@@ -18,12 +18,13 @@
#ifndef CREATEPATCHEVENT_H
#define CREATEPATCHEVENT_H
-#include "raul/Path.h"
-#include "QueuedEvent.h"
#include <string>
+#include <raul/Path.h>
+#include "QueuedEvent.h"
+
using std::string;
-template<typename T> class Array;
+namespace Raul { template<typename T> class Array; }
template<typename T> class TreeNode;
namespace Ingen {
@@ -52,7 +53,7 @@ private:
Path _path;
Patch* _patch;
Patch* _parent;
- Array<Node*>* _process_order;
+ Raul::Array<Node*>* _process_order;
TreeNode<Node*>* _patch_treenode;
int _poly;
ErrorType _error;
diff --git a/src/libs/engine/events/DestroyEvent.h b/src/libs/engine/events/DestroyEvent.h
index 49c7b074..435736aa 100644
--- a/src/libs/engine/events/DestroyEvent.h
+++ b/src/libs/engine/events/DestroyEvent.h
@@ -18,14 +18,17 @@
#ifndef DESTROYEVENT_H
#define DESTROYEVENT_H
-#include "raul/Path.h"
-#include "QueuedEvent.h"
#include <string>
+#include <raul/Path.h>
+#include "QueuedEvent.h"
+
using std::string;
-template<typename T> class Array;
-template<typename T> class ListNode;
+namespace Raul {
+ template<typename T> class Array;
+ template<typename T> class ListNode;
+}
template<typename T> class TreeNode;
namespace Ingen {
@@ -61,11 +64,11 @@ private:
Node* _node; ///< Same as _object if it is a Node, otherwise NULL
Port* _port; ///< Same as _object if it is a Port, otherwise NULL
DriverPort* _driver_port;
- ListNode<Node*>* _patch_node_listnode;
- ListNode<Port*>* _patch_port_listnode;
+ Raul::ListNode<Node*>* _patch_node_listnode;
+ Raul::ListNode<Port*>* _patch_port_listnode;
TreeNode<GraphObject*>* _store_treenode;
- Array<Port*>* _ports_array; ///< New (external) ports array for Patch
- Array<Node*>* _process_order; ///< Patch's new process order
+ Raul::Array<Port*>* _ports_array; ///< New (external) ports array for Patch
+ Raul::Array<Node*>* _process_order; ///< Patch's new process order
DisconnectNodeEvent* _disconnect_node_event;
DisconnectPortEvent* _disconnect_port_event;
};
diff --git a/src/libs/engine/events/DisconnectNodeEvent.cpp b/src/libs/engine/events/DisconnectNodeEvent.cpp
index 6be22572..1dc5121f 100644
--- a/src/libs/engine/events/DisconnectNodeEvent.cpp
+++ b/src/libs/engine/events/DisconnectNodeEvent.cpp
@@ -17,15 +17,15 @@
#include "DisconnectNodeEvent.h"
#include <iostream>
+#include <raul/List.h>
+#include <raul/Array.h>
#include "Responder.h"
#include "Engine.h"
#include "Maid.h"
-#include "List.h"
#include "Node.h"
#include "TypedConnection.h"
#include "DisconnectionEvent.h"
#include "Port.h"
-#include "Array.h"
#include "InputPort.h"
#include "OutputPort.h"
#include "Patch.h"
@@ -65,7 +65,7 @@ DisconnectNodeEvent::DisconnectNodeEvent(Engine& engine, Node* node)
DisconnectNodeEvent::~DisconnectNodeEvent()
{
- for (List<DisconnectionEvent*>::iterator i = _disconnection_events.begin(); i != _disconnection_events.end(); ++i)
+ for (Raul::List<DisconnectionEvent*>::iterator i = _disconnection_events.begin(); i != _disconnection_events.end(); ++i)
delete (*i);
}
@@ -73,7 +73,7 @@ DisconnectNodeEvent::~DisconnectNodeEvent()
void
DisconnectNodeEvent::pre_process()
{
- typedef List<Connection*>::const_iterator ConnectionListIterator;
+ typedef Raul::List<Connection*>::const_iterator ConnectionListIterator;
// cerr << "Preparing disconnection event...\n";
@@ -102,7 +102,7 @@ DisconnectNodeEvent::pre_process()
DisconnectionEvent* ev = new DisconnectionEvent(_engine, SharedPtr<Responder>(new Responder()), _time,
c->src_port(), c->dst_port());
ev->pre_process();
- _disconnection_events.push_back(new ListNode<DisconnectionEvent*>(ev));
+ _disconnection_events.push_back(new Raul::ListNode<DisconnectionEvent*>(ev));
c->pending_disconnection(true);
}
}
@@ -118,7 +118,7 @@ DisconnectNodeEvent::execute(SampleCount nframes, FrameTime start, FrameTime end
QueuedEvent::execute(nframes, start, end);
if (_succeeded) {
- for (List<DisconnectionEvent*>::iterator i = _disconnection_events.begin(); i != _disconnection_events.end(); ++i)
+ for (Raul::List<DisconnectionEvent*>::iterator i = _disconnection_events.begin(); i != _disconnection_events.end(); ++i)
(*i)->execute(nframes, start, end);
}
}
@@ -130,7 +130,7 @@ DisconnectNodeEvent::post_process()
if (_succeeded) {
if (_responder)
_responder->respond_ok();
- for (List<DisconnectionEvent*>::iterator i = _disconnection_events.begin(); i != _disconnection_events.end(); ++i)
+ for (Raul::List<DisconnectionEvent*>::iterator i = _disconnection_events.begin(); i != _disconnection_events.end(); ++i)
(*i)->post_process();
} else {
if (_responder)
diff --git a/src/libs/engine/events/DisconnectNodeEvent.h b/src/libs/engine/events/DisconnectNodeEvent.h
index 7a028aca..bf4644ad 100644
--- a/src/libs/engine/events/DisconnectNodeEvent.h
+++ b/src/libs/engine/events/DisconnectNodeEvent.h
@@ -19,9 +19,10 @@
#define DISCONNECTNODEEVENT_H
#include <string>
-#include "raul/Path.h"
+#include <raul/List.h>
+#include <raul/Path.h>
#include "QueuedEvent.h"
-#include "List.h"
+
using std::string;
namespace Ingen {
@@ -55,7 +56,7 @@ private:
Path _node_path;
Patch* _patch;
Node* _node;
- List<DisconnectionEvent*> _disconnection_events;
+ Raul::List<DisconnectionEvent*> _disconnection_events;
bool _succeeded;
bool _lookup;
diff --git a/src/libs/engine/events/DisconnectPortEvent.cpp b/src/libs/engine/events/DisconnectPortEvent.cpp
index 9f4d7b74..76c95ef9 100644
--- a/src/libs/engine/events/DisconnectPortEvent.cpp
+++ b/src/libs/engine/events/DisconnectPortEvent.cpp
@@ -20,12 +20,12 @@
#include "Responder.h"
#include "Engine.h"
#include "Maid.h"
-#include "List.h"
+#include <raul/List.h>
#include "Node.h"
#include "Connection.h"
#include "DisconnectionEvent.h"
#include "Port.h"
-#include "Array.h"
+#include <raul/Array.h>
#include "InputPort.h"
#include "OutputPort.h"
#include "Patch.h"
@@ -66,7 +66,7 @@ DisconnectPortEvent::DisconnectPortEvent(Engine& engine, Port* port)
DisconnectPortEvent::~DisconnectPortEvent()
{
- for (List<DisconnectionEvent*>::iterator i = _disconnection_events.begin(); i != _disconnection_events.end(); ++i)
+ for (Raul::List<DisconnectionEvent*>::iterator i = _disconnection_events.begin(); i != _disconnection_events.end(); ++i)
delete (*i);
}
@@ -101,13 +101,13 @@ DisconnectPortEvent::pre_process()
}
Connection* c = NULL;
- for (List<Connection*>::const_iterator i = _patch->connections().begin(); i != _patch->connections().end(); ++i) {
+ for (Raul::List<Connection*>::const_iterator i = _patch->connections().begin(); i != _patch->connections().end(); ++i) {
c = (*i);
if ((c->src_port() == _port || c->dst_port() == _port) && !c->pending_disconnection()) {
DisconnectionEvent* ev = new DisconnectionEvent(_engine, SharedPtr<Responder>(new Responder()), _time,
c->src_port(), c->dst_port());
ev->pre_process();
- _disconnection_events.push_back(new ListNode<DisconnectionEvent*>(ev));
+ _disconnection_events.push_back(new Raul::ListNode<DisconnectionEvent*>(ev));
c->pending_disconnection(true);
}
}
@@ -123,7 +123,7 @@ DisconnectPortEvent::execute(SampleCount nframes, FrameTime start, FrameTime end
QueuedEvent::execute(nframes, start, end);
if (_succeeded) {
- for (List<DisconnectionEvent*>::iterator i = _disconnection_events.begin(); i != _disconnection_events.end(); ++i)
+ for (Raul::List<DisconnectionEvent*>::iterator i = _disconnection_events.begin(); i != _disconnection_events.end(); ++i)
(*i)->execute(nframes, start, end);
}
}
@@ -135,7 +135,7 @@ DisconnectPortEvent::post_process()
if (_succeeded) {
if (_responder)
_responder->respond_ok();
- for (List<DisconnectionEvent*>::iterator i = _disconnection_events.begin(); i != _disconnection_events.end(); ++i)
+ for (Raul::List<DisconnectionEvent*>::iterator i = _disconnection_events.begin(); i != _disconnection_events.end(); ++i)
(*i)->post_process();
} else {
if (_responder)
diff --git a/src/libs/engine/events/DisconnectPortEvent.h b/src/libs/engine/events/DisconnectPortEvent.h
index e09688a1..f3058fa1 100644
--- a/src/libs/engine/events/DisconnectPortEvent.h
+++ b/src/libs/engine/events/DisconnectPortEvent.h
@@ -21,9 +21,9 @@
#include <string>
#include "raul/Path.h"
#include "QueuedEvent.h"
-#include "List.h"
+#include <raul/List.h>
-template <typename T> class Array;
+namespace Raul { template <typename T> class Array; }
namespace Ingen {
@@ -56,9 +56,9 @@ private:
Path _port_path;
Patch* _patch;
Port* _port;
- List<DisconnectionEvent*> _disconnection_events;
+ Raul::List<DisconnectionEvent*> _disconnection_events;
- Array<Node*>* _process_order; // Patch's new process order
+ Raul::Array<Node*>* _process_order; // Patch's new process order
bool _succeeded;
bool _lookup;
diff --git a/src/libs/engine/events/DisconnectionEvent.cpp b/src/libs/engine/events/DisconnectionEvent.cpp
index 20c1b371..84ca49ff 100644
--- a/src/libs/engine/events/DisconnectionEvent.cpp
+++ b/src/libs/engine/events/DisconnectionEvent.cpp
@@ -214,13 +214,13 @@ TypedDisconnectionEvent<T>::pre_process()
return;
}
- for (List<Node*>::iterator i = dst_node->providers()->begin(); i != dst_node->providers()->end(); ++i)
+ for (Raul::List<Node*>::iterator i = dst_node->providers()->begin(); i != dst_node->providers()->end(); ++i)
if ((*i) == src_node) {
delete dst_node->providers()->remove(i);
break;
}
- for (List<Node*>::iterator i = src_node->dependants()->begin(); i != src_node->dependants()->end(); ++i)
+ for (Raul::List<Node*>::iterator i = src_node->dependants()->begin(); i != src_node->dependants()->end(); ++i)
if ((*i) == dst_node) {
delete src_node->dependants()->remove(i);
break;
@@ -242,11 +242,11 @@ TypedDisconnectionEvent<T>::execute(SampleCount nframes, FrameTime start, FrameT
if (_succeeded) {
- ListNode<TypedConnection<T>*>* const port_connection
+ Raul::ListNode<TypedConnection<T>*>* const port_connection
= _dst_port->remove_connection(_src_port);
if (port_connection != NULL) {
- ListNode<Connection*>* const patch_connection
+ Raul::ListNode<Connection*>* const patch_connection
= _patch->remove_connection(_src_port, _dst_port);
assert(patch_connection);
diff --git a/src/libs/engine/events/DisconnectionEvent.h b/src/libs/engine/events/DisconnectionEvent.h
index e8802017..01a72e85 100644
--- a/src/libs/engine/events/DisconnectionEvent.h
+++ b/src/libs/engine/events/DisconnectionEvent.h
@@ -19,13 +19,15 @@
#define DISCONNECTIONEVENT_H
#include <string>
-#include "raul/Path.h"
+#include <raul/Path.h>
#include "QueuedEvent.h"
#include "types.h"
using std::string;
-template <typename T> class ListNode;
-template <typename T> class Array;
+namespace Raul {
+ template <typename T> class ListNode;
+ template <typename T> class Array;
+}
namespace Ingen {
@@ -94,7 +96,7 @@ private:
InputPort<T>* _dst_port;
Patch* _patch;
- Array<Node*>* _process_order; ///< New process order for Patch
+ Raul::Array<Node*>* _process_order; ///< New process order for Patch
bool _succeeded;
};
diff --git a/src/libs/engine/events/EnablePatchEvent.h b/src/libs/engine/events/EnablePatchEvent.h
index 9d2a8db6..350c9f3e 100644
--- a/src/libs/engine/events/EnablePatchEvent.h
+++ b/src/libs/engine/events/EnablePatchEvent.h
@@ -23,7 +23,7 @@
using std::string;
-template <typename T> class Array;
+namespace Raul { template <typename T> class Array; }
namespace Ingen {
@@ -47,7 +47,7 @@ public:
private:
string _patch_path;
Patch* _patch;
- Array<Node*>* _process_order; // Patch's new process order
+ Raul::Array<Node*>* _process_order; // Patch's new process order
};
diff --git a/src/libs/engine/events/RenameEvent.h b/src/libs/engine/events/RenameEvent.h
index 56232640..9cba840d 100644
--- a/src/libs/engine/events/RenameEvent.h
+++ b/src/libs/engine/events/RenameEvent.h
@@ -18,9 +18,10 @@
#ifndef RENAMEEVENT_H
#define RENAMEEVENT_H
-#include "QueuedEvent.h"
-#include "raul/Path.h"
#include <string>
+#include "QueuedEvent.h"
+#include <raul/Path.h>
+
using std::string;
template<typename T> class TreeNode;
diff --git a/src/libs/engine/tests/Makefile.am b/src/libs/engine/tests/Makefile.am
index 993c9831..c9d1e0c9 100644
--- a/src/libs/engine/tests/Makefile.am
+++ b/src/libs/engine/tests/Makefile.am
@@ -1,14 +1,10 @@
if BUILD_UNIT_TESTS
-AM_CXXFLAGS = @JACK_CFLAGS@ @LOSC_CFLAGS@ @ALSA_CFLAGS@ -I../../common
-common_ldadd = @JACK_LIBS@ @LOSC_LIBS@ @ALSA_LIBS@ -lrt
+AM_CXXFLAGS = @JACK_CFLAGS@ @RAUL_CFLAGS@ @LOSC_CFLAGS@ @ALSA_CFLAGS@ -I../../common
+common_ldadd = @JACK_LIBS@ @RAUL_LIBS@ @LOSC_LIBS@ @ALSA_LIBS@ -lrt
node_tree_test_LDADD = $(common_ldadd)
-bin_PROGRAMS = node_tree_test list_test
-
-list_test_SOURCES = \
- ../List.h \
- list_test.cpp
+bin_PROGRAMS = node_tree_test
node_tree_test_SOURCES = \
node_tree_test.cpp
diff --git a/src/libs/engine/tests/list_test.cpp b/src/libs/engine/tests/list_test.cpp
deleted file mode 100644
index d2f91c9d..00000000
--- a/src/libs/engine/tests/list_test.cpp
+++ /dev/null
@@ -1,93 +0,0 @@
-#include "../List.h"
-#include <iostream>
-#include <cstddef>
-
-using std::cout; using std::endl;
-
-
-int main()
-{
- List<int> l;
-
- l.push_back(new ListNode<int>(1));
- l.push_back(new ListNode<int>(2));
- l.push_back(new ListNode<int>(3));
- l.push_back(new ListNode<int>(4));
- l.push_back(new ListNode<int>(5));
- l.push_back(new ListNode<int>(6));
- l.push_back(new ListNode<int>(7));
- l.push_back(new ListNode<int>(8));
-
- cout << "List:" << endl;
- for (List<int>::iterator i = l.begin(); i != l.end(); ++i) {
- cout << *i << endl;
- }
- cout << endl;
-
-
- for (List<int>::iterator i = l.begin(); i != l.end(); ++i) {
- if ((*i) == 4)
- l.remove(i);
- }
-
- std::cerr << "Removed 4 (by iterator)...\n";
- for (List<int>::iterator i = l.begin(); i != l.end(); ++i) {
- cout << *i << endl;
- }
- cout << endl;
-
- l.remove(1);
-
- std::cerr << "Removed 1 (head) (by value)...\n";
- for (List<int>::iterator i = l.begin(); i != l.end(); ++i) {
- cout << *i << endl;
- }
- cout << endl;
-
- for (List<int>::iterator i = l.begin(); i != l.end(); ++i) {
- if ((*i) == 2)
- l.remove(i);
- }
-
- std::cerr << "Removed 2 (head) (by iterator)...\n";
- for (List<int>::iterator i = l.begin(); i != l.end(); ++i) {
- cout << *i << endl;
- }
- cout << endl;
-
- l.remove(5);
-
- std::cerr << "Removed 5 (by value)...\n";
- for (List<int>::iterator i = l.begin(); i != l.end(); ++i) {
- cout << *i << endl;
- }
- cout << endl;
-
- l.remove(8);
-
- std::cerr << "Removed 8 (tail) (by value)...\n";
- for (List<int>::iterator i = l.begin(); i != l.end(); ++i) {
- cout << *i << endl;
- }
- cout << endl;
-
- for (List<int>::iterator i = l.begin(); i != l.end(); ++i) {
- if ((*i) == 7)
- l.remove(i);
- }
-
- std::cerr << "Removed 7 (tail) (by iterator)...\n";
- for (List<int>::iterator i = l.begin(); i != l.end(); ++i) {
- cout << *i << endl;
- }
- cout << endl;
-
- List<int> r;
- r.push_back(new ListNode<int>(9));
- r.remove(9);
- std::cerr << "Should not see ANY numbers:\n";
- for (List<int>::iterator i = r.begin(); i != r.end(); ++i) {
- cout << *i << endl;
- }
- return 0;
-}