Skip to content

Commit 32a5639

Browse files
committed
Overload propertynames
1 parent e8d2838 commit 32a5639

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

src/systems/abstractsystem.jl

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,27 @@ end
185185

186186
rename(x::AbstractSystem, name) = @set x.name = name
187187

188+
function Base.propertynames(sys::AbstractSystem; private=false)
189+
if private
190+
return fieldnames(typeof(sys))
191+
else
192+
names = Symbol[]
193+
for s in get_systems(sys)
194+
push!(names, getname(s))
195+
end
196+
has_states(sys) && for s in get_states(sys)
197+
push!(names, getname(s))
198+
end
199+
has_ps(sys) && for s in get_ps(sys)
200+
push!(names, getname(s))
201+
end
202+
has_observed(sys) && for s in get_observed(sys)
203+
push!(names, getname(s.lhs))
204+
end
205+
return names
206+
end
207+
end
208+
188209
function Base.getproperty(sys::AbstractSystem, name::Symbol)
189210
sysname = nameof(sys)
190211
systems = get_systems(sys)

test/reduction.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ connected = ODESystem([s ~ a + lorenz1.x
7474
lorenz2.y ~ s
7575
lorenz1.F ~ lorenz2.u
7676
lorenz2.F ~ lorenz1.u],t,systems=[lorenz1,lorenz2])
77+
@test length(Base.propertynames(connected)) == 10
7778

7879
# Reduced Flattened System
7980

0 commit comments

Comments
 (0)