@@ -344,16 +344,23 @@ end
344344# Will need equivalent of resize! that resizes in front of data instead of in back:
345345# popfirst!(V::ArrayOfSimilarArrays) = ...
346346
347- function Base . empty (A :: VectorOfSimilarArrays{T,M} , :: Type{<:AbstractArray{U}} ) where {T,M,U}
348- data = A . data
349- size_inner, size_outer = split_tuple (size (data), Val {1 } ())
347+
348+ function _empty_data_size (A :: VectorOfSimilarArrays{T,M} ) where {T,M}
349+ size_inner, size_outer = split_tuple (size (A . data), Val {M } ())
350350 empty_size_outer = map (x -> zero (x), size_outer)
351+ (size_inner... , empty_size_outer... )
352+ end
351353
354+ function Base. empty (A:: VectorOfSimilarArrays{T,M} , :: Type{<:AbstractArray{U}} ) where {T,M,U}
355+ new_data_size = _empty_data_size (A)
352356 # ToDo: Don't use similar if data is an ElasticArray?
353- VectorOfSimilarArrays {T,M} (similar (data, U, size_inner ... , empty_size_outer ... ))
357+ VectorOfSimilarArrays {T,M} (similar (A . data, U, new_data_size ... ))
354358end
355359
356- Base. empty (A:: VectorOfSimilarArrays{T,M} ) where {T,M} = empty (A, Array{T})
360+ function Base. empty! (A:: VectorOfSimilarArrays{T,M} ) where {T,M}
361+ resize! (A. data, _empty_data_size (A))
362+ A
363+ end
357364
358365
359366
0 commit comments