/* This file is part of Machina. Copyright 2007-2013 David Robillard 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 3 of the License, or 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 more details. You should have received a copy of the GNU General Public License along with Machina. If not, see . */ #ifndef MACHINA_EDGE_HPP #define MACHINA_EDGE_HPP #include #include "machina/types.hpp" #include "Action.hpp" #include "Stateful.hpp" namespace machina { class Node; class Edge : public Stateful { public: Edge(WPtr tail, SPtr head, float probability=1.0f) : _tail(tail) , _head(head) , _probability(probability) {} void set(URIInt key, const Atom& value); void write_state(Sord::Model& model); WPtr tail() { return _tail; } SPtr head() { return _head; } void set_tail(WPtr tail) { _tail = tail; } void set_head(SPtr head) { _head = head; } inline float probability() const { return _probability; } inline void set_probability(float p) { _probability = p; } private: WPtr _tail; SPtr _head; float _probability; }; } // namespace machina #endif // MACHINA_EDGE_HPP