Skip to content

Commit b0496e5

Browse files
committed
Add optimized copyto! for ArrayOfSimilarArrays
1 parent 9f92b39 commit b0496e5

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

src/array_of_similar_arrays.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,12 @@ function Base.similar(A::ArrayOfSimilarArrays{T,M,N}, ::Type{<:AbstractArray{U}}
165165
end
166166

167167

168+
function Base.copyto!(dest::ArrayOfSimilarArrays{T,M,N}, src::ArrayOfSimilarArrays{U,M,N}) where {T,M,N,U}
169+
copyto!(dest.data, src.data)
170+
dest
171+
end
172+
173+
168174
function Base.append!(dest::ArrayOfSimilarArrays{T,M,N}, src::ArrayOfSimilarArrays{U,M,N}) where {T,M,N,U}
169175
innersize(dest) != innersize(src) && throw(DimensionMismatch("Can't append, shape of element arrays of source and dest are not equal"))
170176
append!(dest.data, src.data)

test/array_of_similar_arrays.jl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,16 @@ using UnsafeArrays
111111
test_from_nested(VectorOfSimilarVectors, VectorOfSimilarVectors{Float64,Array{Float64,2}}, Val(1), Val(1))
112112
end
113113

114+
115+
@testset "similar and copyto!" begin
116+
A = ArrayOfSimilarArrays{Float64,1}(rand_flat_array(Val(1)))
117+
@test (@inferred copyto!((@inferred similar(A)), A)) == A
118+
119+
A = ArrayOfSimilarArrays{Float64,2}(rand_flat_array(Val(5)))
120+
@test (@inferred copyto!((@inferred similar(A)), A)) == A
121+
end
122+
123+
114124
@testset "flatview" begin
115125
A = rand_nested_similar_arrays(Val(3), Val(2))
116126
B = ArrayOfSimilarArrays(A)

0 commit comments

Comments
 (0)