diff options
author | David Robillard <d@drobilla.net> | 2007-03-02 00:05:18 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-03-02 00:05:18 +0000 |
commit | 19b537a142c127dd2c1d9a40a7999714f9d2175d (patch) | |
tree | 85d7da2a138e34ca5783dffbc6547fd4500ca7ca /src | |
parent | de25ae35ccb0613290ba20bfcf0ea15476c26ed5 (diff) | |
download | machina-19b537a142c127dd2c1d9a40a7999714f9d2175d.tar.gz machina-19b537a142c127dd2c1d9a40a7999714f9d2175d.tar.bz2 machina-19b537a142c127dd2c1d9a40a7999714f9d2175d.zip |
Work towards Action serialization.
Made edge length in dot graphs (from machina2dot) correspond to node duration
to make automaton diagram map closer to music notation.
git-svn-id: http://svn.drobilla.net/lad/machina@341 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src')
-rw-r--r-- | src/engine/Action.cpp | 35 | ||||
-rw-r--r-- | src/engine/Makefile.am | 1 | ||||
-rw-r--r-- | src/engine/Node.cpp | 7 | ||||
-rw-r--r-- | src/engine/machina/Action.hpp | 5 |
4 files changed, 47 insertions, 1 deletions
diff --git a/src/engine/Action.cpp b/src/engine/Action.cpp new file mode 100644 index 0000000..a893d74 --- /dev/null +++ b/src/engine/Action.cpp @@ -0,0 +1,35 @@ +/* This file is part of Machina. + * Copyright (C) 2007 Dave Robillard <http://drobilla.net> + * + * Machina 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. + * + * Machina 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 Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <raul/RDFWriter.h> +#include "machina/Action.hpp" + +namespace Machina { + +void +Action::write_state(Raul::RDFWriter& writer) +{ + using Raul::RdfId; + + writer.write(_id, + RdfId(RdfId::RESOURCE, "rdf:type"), + RdfId(RdfId::RESOURCE, "machina:Action")); +} + + +} // namespace Machina + diff --git a/src/engine/Makefile.am b/src/engine/Makefile.am index 2cda9e5..d500302 100644 --- a/src/engine/Makefile.am +++ b/src/engine/Makefile.am @@ -9,6 +9,7 @@ libmachina_la_LIBADD = @RAUL_LIBS@ @JACK_LIBS@ @GLIBMM_LIBS@ libmachina_la_SOURCES = \ Node.cpp \ Edge.cpp \ + Action.cpp \ Machine.cpp \ Loader.cpp \ MidiAction.cpp \ diff --git a/src/engine/Node.cpp b/src/engine/Node.cpp index 47eee35..7af2997 100644 --- a/src/engine/Node.cpp +++ b/src/engine/Node.cpp @@ -130,6 +130,13 @@ Node::write_state(Raul::RDFWriter& writer) writer.write(_id, RdfId(RdfId::RESOURCE, "machina:duration"), Raul::Atom((float)_duration)); + + writer.write(_id, + RdfId(RdfId::RESOURCE, "machina:enterAction"), + _enter_action->id()); + _enter_action->write_state(writer); + + _exit_action->write_state(writer); /*for (Node::Edges::const_iterator e = _outgoing_edges.begin(); e != _outgoing_edges.end(); ++e) diff --git a/src/engine/machina/Action.hpp b/src/engine/machina/Action.hpp index 2bffaa3..16c9b58 100644 --- a/src/engine/machina/Action.hpp +++ b/src/engine/machina/Action.hpp @@ -22,6 +22,7 @@ #include <iostream> #include <raul/Deletable.h> #include <raul/TimeSlice.h> +#include <raul/Stateful.h> #include "types.hpp" namespace Machina { @@ -29,8 +30,10 @@ namespace Machina { /** An Action, executed on entering or exiting of a state. */ -struct Action : public Raul::Deletable { +struct Action : public Raul::Deletable, public Raul::Stateful { virtual void execute(Raul::BeatTime /*time*/) {} + + virtual void write_state(Raul::RDFWriter& writer); }; |