@@ -57,9 +57,9 @@ struct ArrayOfSimilarArrays{
57
57
} <: AbstractArrayOfSimilarArrays{T,M,N}
58
58
data:: P
59
59
60
- function ArrayOfSimilarArrays {T,M} (parent:: AbstractArray{U,L} ) where {T,M,L,U}
60
+ function ArrayOfSimilarArrays {T,M,N } (parent:: AbstractArray{U,L} ) where {T,M,N ,L,U}
61
61
size_inner, size_outer = split_tuple (size (parent), Val {M} ())
62
- N = length (size_outer )
62
+ require_ndims (parent, _add_vals ( Val {M} (), Val {N} ()) )
63
63
conv_parent = _convert_elype (T, parent)
64
64
P = typeof (conv_parent)
65
65
new {T,M,N,L,P} (conv_parent)
69
69
export ArrayOfSimilarArrays
70
70
71
71
function ArrayOfSimilarArrays {T,M,N} (A:: AbstractArray{<:AbstractArray{U,M},N} ) where {T,M,N,U}
72
- B = ArrayOfSimilarArrays {T,M} (Array {T} (_size_inner (A)... , size (A)... ))
72
+ B = ArrayOfSimilarArrays {T,M,N } (Array {T} (_size_inner (A)... , size (A)... ))
73
73
copy! (B, A)
74
74
end
75
75
@@ -81,7 +81,7 @@ ArrayOfSimilarArrays(A::AbstractArray{<:AbstractArray{T,M},N}) where {T,M,N} =
81
81
82
82
83
83
@static if VERSION < v " 0.7.0-DEV.3138"
84
- Base. convert (R:: Type{ArrayOfSimilarArrays{T,M}} , parent:: AbstractArray{U,L} ) where {T,M,L,U} = R (parent)
84
+ Base. convert (R:: Type{ArrayOfSimilarArrays{T,M,N }} , parent:: AbstractArray{U,L} ) where {T,M,N ,L,U} = R (parent)
85
85
86
86
Base. convert (R:: Type{ArrayOfSimilarArrays{T,M,N}} , A:: AbstractArray{<:AbstractArray{U,M},N} ) where {T,M,N,U} = R (A)
87
87
Base. convert (R:: Type{ArrayOfSimilarArrays{T}} , A:: AbstractArray{<:AbstractArray{U,M},N} ) where {T,M,N,U} = R (A)
143
143
function Base. similar (A:: ArrayOfSimilarArrays{T,M,N} , :: Type{<:AbstractArray{U}} , dims:: Dims ) where {T,M,N,U}
144
144
data = A. data
145
145
size_inner, size_outer = split_tuple (size (data), Val {M} ())
146
- ArrayOfSimilarArrays {T,M} (similar (data, U, size_inner... , dims... ))
146
+ ArrayOfSimilarArrays {T,M,N } (similar (data, U, size_inner... , dims... ))
147
147
end
148
148
149
149
@@ -175,7 +175,7 @@ Base.prepend!(dest::ArrayOfSimilarArrays{T,M,N}, src::AbstractArray{<:AbstractAr
175
175
176
176
177
177
UnsafeArrays. unsafe_uview (A:: ArrayOfSimilarArrays{T,M,N} ) where {T,M,N} =
178
- ArrayOfSimilarArrays {T,M} (uview (A. data))
178
+ ArrayOfSimilarArrays {T,M,N } (uview (A. data))
179
179
180
180
181
181
@@ -187,7 +187,7 @@ const VectorOfSimilarArrays{
187
187
export VectorOfSimilarArrays
188
188
189
189
VectorOfSimilarArrays {T} (parent:: AbstractArray{U,L} ) where {T,U,L} =
190
- ArrayOfSimilarArrays {T,length(Base.front(size(parent)))} (parent)
190
+ ArrayOfSimilarArrays {T,length(Base.front(size(parent))),1 } (parent)
191
191
192
192
VectorOfSimilarArrays {T} (A:: AbstractVector{<:AbstractArray{U,M}} ) where {T,M,U} =
193
193
VectorOfSimilarArrays {T,M} (A)
@@ -237,6 +237,9 @@ const ArrayOfSimilarVectors{
237
237
238
238
export ArrayOfSimilarVectors
239
239
240
+ ArrayOfSimilarVectors {T} (parent:: AbstractArray{U,L} ) where {T,U,L} =
241
+ ArrayOfSimilarArrays {T,1,length(Base.front(size(parent)))} (parent)
242
+
240
243
ArrayOfSimilarVectors {T} (A:: AbstractArray{<:AbstractVector{U},N} ) where {T,N,U} =
241
244
ArrayOfSimilarVectors {T,N} (A)
242
245
@@ -245,6 +248,7 @@ ArrayOfSimilarVectors(A::AbstractArray{<:AbstractVector{T},N}) where {T,N} =
245
248
246
249
247
250
@static if VERSION < v " 0.7.0-DEV.3138"
251
+ Base. convert (R:: Type{ArrayOfSimilarVectors{T}} , parent:: AbstractArray{U,L} ) where {T,U,L} = R (parent)
248
252
Base. convert (R:: Type{ArrayOfSimilarVectors{T}} , A:: AbstractArray{<:AbstractVector{U},N} ) where {T,N,U} = R (A)
249
253
Base. convert (R:: Type{ArrayOfSimilarVectors} , A:: AbstractArray{<:AbstractVector{T},N} ) where {T,N} = R (A)
250
254
end
@@ -258,7 +262,7 @@ const VectorOfSimilarVectors{
258
262
export VectorOfSimilarVectors
259
263
260
264
VectorOfSimilarVectors {T} (parent:: AbstractArray{U,2} ) where {T,U} =
261
- ArrayOfSimilarArrays {T,1} (parent)
265
+ ArrayOfSimilarArrays {T,1,1 } (parent)
262
266
263
267
VectorOfSimilarVectors (parent:: AbstractArray{T,2} ) where {T} =
264
268
VectorOfSimilarVectors {T} (parent)
0 commit comments