diff --git a/src/lowlevel_api.jl b/src/lowlevel_api.jl index 63d9848..b190725 100644 --- a/src/lowlevel_api.jl +++ b/src/lowlevel_api.jl @@ -238,7 +238,10 @@ IteratorSize(::Type{Object}) = Base.SizeUnknown() IteratorEltype(::Type{Object}) = Base.HasEltype() eltype(::Type{Object}) = Object isempty(::Object) = false -iterate(obj::Object) = (obj, isempty(obj.memory_children) ? obj.children : vcat(obj.memory_children, obj.children)) +function iterate(obj::Object) + state = vcat(obj.children, obj.memory_children, obj.io_children) + return obj, state +end function iterate(::Object, state::Vector{Object}) isempty(state) && return nothing # depth-first traversal @@ -246,6 +249,7 @@ function iterate(::Object, state::Vector{Object}) obj, state = state[1], state[2:end] prepend!(state, obj.children) prepend!(state, obj.memory_children) + prepend!(state, obj.io_children) return obj, state end # length(obj::Object) = mapreduce(x->1, +, obj)