summaryrefslogtreecommitdiffstats
path: root/src/server/PatchImpl.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2012-07-25 23:18:56 +0000
committerDavid Robillard <d@drobilla.net>2012-07-25 23:18:56 +0000
commite89902e35e31977bfc310eb735aa57494a073eeb (patch)
treeda9b5b9e5c22840e46c48b4596fbab8f35cc704c /src/server/PatchImpl.cpp
parent59d70a37ca7a6c1601f437f7a9f99d77399c8d7d (diff)
downloadingen-e89902e35e31977bfc310eb735aa57494a073eeb.tar.gz
ingen-e89902e35e31977bfc310eb735aa57494a073eeb.tar.bz2
ingen-e89902e35e31977bfc310eb735aa57494a073eeb.zip
Make compile_recursive private to PatchImpl.cpp.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4553 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/server/PatchImpl.cpp')
-rw-r--r--src/server/PatchImpl.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/server/PatchImpl.cpp b/src/server/PatchImpl.cpp
index de1fe43f..95bb2132 100644
--- a/src/server/PatchImpl.cpp
+++ b/src/server/PatchImpl.cpp
@@ -424,6 +424,23 @@ PatchImpl::build_ports_array() const
return result;
}
+static inline void
+compile_recursive(NodeImpl* n, CompiledPatch* output)
+{
+ if (n == NULL || n->traversed())
+ return;
+
+ n->traversed(true);
+ assert(output != NULL);
+
+ for (std::list<NodeImpl*>::iterator i = n->providers().begin();
+ i != n->providers().end(); ++i)
+ if (!(*i)->traversed())
+ compile_recursive(*i, output);
+
+ output->push_back(CompiledNode(n, n->providers().size(), n->dependants()));
+}
+
/** Find the process order for this Patch.
*
* The process order is a flat list that the patch will execute in order