summaryrefslogtreecommitdiffstats
path: root/src/client/PatchModel.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2012-08-19 02:24:38 +0000
committerDavid Robillard <d@drobilla.net>2012-08-19 02:24:38 +0000
commit800c329a0b77f9044923885abe0728028eca8350 (patch)
treef2d4a9d06fd6978e193de95ba60bfffe3d15a998 /src/client/PatchModel.cpp
parent317627ef40f7654c298aa1ac707851c852259e3a (diff)
downloadingen-800c329a0b77f9044923885abe0728028eca8350.tar.gz
ingen-800c329a0b77f9044923885abe0728028eca8350.tar.bz2
ingen-800c329a0b77f9044923885abe0728028eca8350.zip
Patch => Graph
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4721 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/client/PatchModel.cpp')
-rw-r--r--src/client/PatchModel.cpp173
1 files changed, 0 insertions, 173 deletions
diff --git a/src/client/PatchModel.cpp b/src/client/PatchModel.cpp
deleted file mode 100644
index 9b622cda..00000000
--- a/src/client/PatchModel.cpp
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- This file is part of Ingen.
- Copyright 2007-2012 David Robillard <http://drobilla.net/>
-
- Ingen is free software: you can redistribute it and/or modify it under the
- terms of the GNU Affero General Public License as published by the Free
- Software Foundation, either version 3 of the License, or 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 Affero General Public License for details.
-
- You should have received a copy of the GNU Affero General Public License
- along with Ingen. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <cassert>
-
-#include "ingen/client/ClientStore.hpp"
-#include "ingen/client/EdgeModel.hpp"
-#include "ingen/client/BlockModel.hpp"
-#include "ingen/client/PatchModel.hpp"
-#include "ingen/URIs.hpp"
-
-using namespace std;
-
-namespace Ingen {
-namespace Client {
-
-void
-PatchModel::add_child(SharedPtr<ObjectModel> c)
-{
- assert(c->parent().get() == this);
-
- SharedPtr<PortModel> pm = PtrCast<PortModel>(c);
- if (pm) {
- add_port(pm);
- return;
- }
-
- SharedPtr<BlockModel> bm = PtrCast<BlockModel>(c);
- if (bm) {
- _signal_new_block.emit(bm);
- }
-}
-
-bool
-PatchModel::remove_child(SharedPtr<ObjectModel> o)
-{
- assert(o->path().is_child_of(path()));
- assert(o->parent().get() == this);
-
- // Remove any connections which referred to this object,
- // since they can't possibly exist anymore
- for (Edges::iterator j = _edges.begin(); j != _edges.end();) {
- Edges::iterator next = j;
- ++next;
-
- SharedPtr<EdgeModel> cm = PtrCast<EdgeModel>(j->second);
- assert(cm);
-
- if (cm->tail_path().parent() == o->path()
- || cm->tail_path() == o->path()
- || cm->head_path().parent() == o->path()
- || cm->head_path() == o->path()) {
- _signal_removed_edge.emit(cm);
- _edges.erase(j); // cuts our reference
- }
- j = next;
- }
-
- SharedPtr<PortModel> pm = PtrCast<PortModel>(o);
- if (pm)
- remove_port(pm);
-
- SharedPtr<BlockModel> bm = PtrCast<BlockModel>(o);
- if (bm) {
- _signal_removed_block.emit(bm);
- }
-
- return true;
-}
-
-void
-PatchModel::clear()
-{
- _edges.clear();
-
- BlockModel::clear();
-
- assert(_edges.empty());
- assert(_ports.empty());
-}
-
-SharedPtr<EdgeModel>
-PatchModel::get_edge(const GraphObject* tail, const GraphObject* head)
-{
- Edges::iterator i = _edges.find(make_pair(tail, head));
- if (i != _edges.end())
- return PtrCast<EdgeModel>(i->second);
- else
- return SharedPtr<EdgeModel>();
-}
-
-/** Add a connection to this patch.
- *
- * A reference to @a cm is taken, released on deletion or removal.
- * If @a cm only contains paths (not pointers to the actual ports), the ports
- * will be found and set. The ports referred to not existing as children of
- * this patch is a fatal error.
- */
-void
-PatchModel::add_edge(SharedPtr<EdgeModel> cm)
-{
- // Store should have 'resolved' the connection already
- assert(cm);
- assert(cm->tail());
- assert(cm->head());
- assert(cm->tail()->parent());
- assert(cm->head()->parent());
- assert(cm->tail_path() != cm->head_path());
- assert(cm->tail()->parent().get() == this
- || cm->tail()->parent()->parent().get() == this);
- assert(cm->head()->parent().get() == this
- || cm->head()->parent()->parent().get() == this);
-
- SharedPtr<EdgeModel> existing = get_edge(
- cm->tail().get(), cm->head().get());
-
- if (existing) {
- assert(cm->tail() == existing->tail());
- assert(cm->head() == existing->head());
- } else {
- _edges.insert(make_pair(make_pair(cm->tail().get(),
- cm->head().get()), cm));
- _signal_new_edge.emit(cm);
- }
-}
-
-void
-PatchModel::remove_edge(const GraphObject* tail, const GraphObject* head)
-{
- Edges::iterator i = _edges.find(make_pair(tail, head));
- if (i != _edges.end()) {
- SharedPtr<EdgeModel> c = PtrCast<EdgeModel>(i->second);
- _signal_removed_edge.emit(c);
- _edges.erase(i);
- }
-}
-
-bool
-PatchModel::enabled() const
-{
- const Raul::Atom& enabled = get_property(_uris.ingen_enabled);
- return (enabled.is_valid() && enabled.get_bool());
-}
-
-uint32_t
-PatchModel::internal_poly() const
-{
- const Raul::Atom& poly = get_property(_uris.ingen_polyphony);
- return poly.is_valid() ? poly.get_int32() : 1;
-}
-
-bool
-PatchModel::polyphonic() const
-{
- const Raul::Atom& poly = get_property(_uris.ingen_polyphonic);
- return poly.is_valid() && poly.get_bool();
-}
-
-} // namespace Client
-} // namespace Ingen