From 671640acd6fe32ce2ca2a6dcd3ce0978123993d4 Mon Sep 17 00:00:00 2001 From: Mike J Innes Date: Sun, 30 Oct 2016 11:38:13 +0000 Subject: [PATCH] ninputs utility --- src/compiler/graph.jl | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/compiler/graph.jl b/src/compiler/graph.jl index 5ee0add9..3a9b02f9 100644 --- a/src/compiler/graph.jl +++ b/src/compiler/graph.jl @@ -4,9 +4,11 @@ splitnode(v, n) = vertex(Split(n), v) inputnode(n) = splitnode(constant(ModelInput()), n) +isinput(v::IVertex) = isa(value(v), Split) && value(v[1]) == Constant(ModelInput()) + function bumpinputs(v::IVertex) prewalk(v) do v - isa(value(v), Split) && value(v[1]) == Constant(ModelInput()) ? + isinput(v) ? inputnode(value(v).n + 1) : v end @@ -21,6 +23,15 @@ end spliceinputs(v::IVertex, inputs::Vertex...) = spliceinput(v, vertex(Group(), inputs...)) +function ninputs(v::IVertex) + n = 0 + prewalk(v) do v + isinput(v) && (n = max(n, value(v).n)) + v + end + return n +end + function detuple(v::IVertex) postwalk(v) do v if isa(value(v), Split) && isa(value(v[1]), Group)