From 3dee4f8a64548dbb2aa11521e258865e5b93e9e3 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sun, 25 Mar 2007 21:56:31 +0000 Subject: Fixed construction algorithm bugs. git-svn-id: http://svn.drobilla.net/lad/machina@377 a436a847-0d15-0410-975c-d299462d15a1 --- src/engine/Machine.cpp | 10 +++++----- src/engine/SMFDriver.cpp | 12 +++++++----- src/engine/machina/Machine.hpp | 2 +- 3 files changed, 13 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/engine/Machine.cpp b/src/engine/Machine.cpp index 91dcfe4..600dd3d 100644 --- a/src/engine/Machine.cpp +++ b/src/engine/Machine.cpp @@ -55,7 +55,7 @@ Machine::set_sink(SharedPtr sink) void Machine::add_node(SharedPtr node) { - cerr << "ADDING NODE " << node.get() << endl; + //cerr << "ADDING NODE " << node.get() << endl; _nodes.push_back(node); } @@ -289,7 +289,7 @@ Machine::write_state(Raul::RDFWriter& writer) for (Nodes::const_iterator n = _nodes.begin(); n != _nodes.end(); ++n) { - cerr << "Writing node " << count++ << " state." << endl; + //cerr << "Writing node " << count++ << " state." << endl; (*n)->write_state(writer); @@ -308,12 +308,12 @@ Machine::write_state(Raul::RDFWriter& writer) for (Nodes::const_iterator n = _nodes.begin(); n != _nodes.end(); ++n) { - cerr << "Writing node " << count++ << " edges: "; + //cerr << "Writing node " << count++ << " edges: "; for (Node::Edges::const_iterator e = (*n)->outgoing_edges().begin(); e != (*n)->outgoing_edges().end(); ++e) { - cerr << "."; + //cerr << "."; (*e)->write_state(writer); @@ -322,7 +322,7 @@ Machine::write_state(Raul::RDFWriter& writer) (*e)->id()); } - cerr << endl; + //cerr << endl; } } diff --git a/src/engine/SMFDriver.cpp b/src/engine/SMFDriver.cpp index ff55e00..33fc686 100644 --- a/src/engine/SMFDriver.cpp +++ b/src/engine/SMFDriver.cpp @@ -120,8 +120,8 @@ SMFDriver::connect_nodes(SharedPtr m, SharedPtr delay_node; - cout << "Connect nodes durations: " << tail->duration() << " .. " << head->duration() << endl; - cout << "Connect nodes times: " << tail_end_time << " .. " << head_start_time << endl; + //cerr << "Connect nodes durations: " << tail->duration() << " .. " << head->duration() << endl; + //cerr << "Connect nodes times: " << tail_end_time << " .. " << head_start_time << endl; if (head_start_time == tail_end_time) { // Connect directly @@ -132,7 +132,7 @@ SMFDriver::connect_nodes(SharedPtr m, tail->add_outgoing_edge(SharedPtr(new Edge(tail, head))); } else { // Need to actually create a delay node - cerr << "Adding delay node for " << tail_end_time << " .. " << head_start_time << endl; + //cerr << "Adding delay node for " << tail_end_time << " .. " << head_start_time << endl; delay_node = SharedPtr(new Node()); delay_node->set_duration(head_start_time - tail_end_time); tail->add_outgoing_edge(SharedPtr(new Edge(tail, delay_node))); @@ -255,6 +255,8 @@ SMFDriver::learn_track(SharedPtr m, resolved->remove_exit_action(); connect_node->set_duration(resolved->duration()); resolved = connect_node; + if (m->nodes().find(connect_node) == m->nodes().end()) + m->add_node(connect_node); } else { connect_node = resolved; m->add_node(resolved); @@ -300,9 +302,9 @@ SMFDriver::learn_track(SharedPtr m, } if (added_nodes > 0) - if (initial_node->outgoing_edges().size() == 1) + /*if (initial_node->outgoing_edges().size() == 1) (*initial_node->outgoing_edges().begin())->dst()->set_initial(true); - else + else*/ m->add_node(initial_node); } diff --git a/src/engine/machina/Machine.hpp b/src/engine/machina/Machine.hpp index e5bef23..7424f31 100644 --- a/src/engine/machina/Machine.hpp +++ b/src/engine/machina/Machine.hpp @@ -61,7 +61,7 @@ public: void clear_pending_learn() { _pending_learn.reset(); } typedef Raul::List > Nodes; - const Nodes& nodes() { return _nodes; } + Nodes& nodes() { return _nodes; } void set_sink(SharedPtr sink); -- cgit v1.2.1