aboutsummaryrefslogtreecommitdiffstats
path: root/src/engine/Machine.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2013-01-13 09:23:42 +0000
committerDavid Robillard <d@drobilla.net>2013-01-13 09:23:42 +0000
commit448d6e329a55848e357d57f8ca225d987627ee08 (patch)
tree0153d22bedf929173b973b98c6840fd010b06aca /src/engine/Machine.cpp
parent67a8adbc93991acfb688f378f52392995a272fac (diff)
downloadmachina-448d6e329a55848e357d57f8ca225d987627ee08.tar.gz
machina-448d6e329a55848e357d57f8ca225d987627ee08.tar.bz2
machina-448d6e329a55848e357d57f8ca225d987627ee08.zip
Move merge operation to Machine::merge().
Delete unused Engine::import_machine(). git-svn-id: http://svn.drobilla.net/lad/trunk/machina@4956 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/engine/Machine.cpp')
-rw-r--r--src/engine/Machine.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/engine/Machine.cpp b/src/engine/Machine.cpp
index a6abcff..b5cfb28 100644
--- a/src/engine/Machine.cpp
+++ b/src/engine/Machine.cpp
@@ -100,6 +100,21 @@ Machine::operator=(const Machine& copy)
return *this;
}
+void
+Machine::merge(const Machine& machine)
+{
+ for (const auto& m : machine.nodes()) {
+ if (m->is_initial()) {
+ for (const auto& e : m->edges()) {
+ e->set_tail(_initial_node);
+ _initial_node->edges().insert(e);
+ }
+ } else {
+ _nodes.insert(m);
+ }
+ }
+}
+
/** Always returns a node, unless there are none */
SPtr<Node>
Machine::random_node()