@@ -32,7 +32,7 @@ export AbstractVectorOfSimilarVectors
32
32
33
33
34
34
@doc doc"""
35
- ArrayOfSimilarArrays{T,M,N,L,P,VF } <: AbstractArrayOfSimilarArrays{T,M,N}
35
+ ArrayOfSimilarArrays{T,M,N,L,P} <: AbstractArrayOfSimilarArrays{T,M,N}
36
36
37
37
Represents a view of an array of dimension `L = M + N` as an array of
38
38
dimension M with elements that are arrays with dimension N. All element arrays
@@ -53,17 +53,15 @@ array supports resizing of it's last dimension (e.g. an `ElasticArray`).
53
53
"""
54
54
struct ArrayOfSimilarArrays{
55
55
T, M, N, L,
56
- P<: AbstractArray{T,L} ,
57
- VF<: Function
56
+ P<: AbstractArray{T,L}
58
57
} <: AbstractArrayOfSimilarArrays{T,M,N}
59
58
data:: P
60
- viewfunc:: VF
61
59
62
- function ArrayOfSimilarArrays {M} (parent:: AbstractArray{T,L} , viewfunc :: VF = view ) where {T,M,L,VF <: Function }
60
+ function ArrayOfSimilarArrays {M} (parent:: AbstractArray{T,L} ) where {T,M,L}
63
61
size_inner, size_outer = split_tuple (size (parent), Val {M} ())
64
62
N = length (size_outer)
65
63
P = typeof (parent)
66
- new {T,M,N,L,P,VF } (parent, viewfunc )
64
+ new {T,M,N,L,P} (parent)
67
65
end
68
66
end
69
67
@@ -87,7 +85,7 @@ function _size_inner(A::ArrayOfSimilarArrays{T,M,N}) where {T,M,N}
87
85
end
88
86
89
87
90
- function ArrayOfSimilarArrays (A:: AbstractArray{<:AbstractArray{T,M},N} , viewfunc :: VF = view ) where {T,M,N,VF <: Function }
88
+ function ArrayOfSimilarArrays (A:: AbstractArray{<:AbstractArray{T,M},N} ) where {T,M,N}
91
89
B = ArrayOfSimilarArrays {M} (Array {T,M+N} (_size_inner (A)... , size (A)... ))
92
90
copy! (B, A)
93
91
end
@@ -105,15 +103,15 @@ Base.size(A::ArrayOfSimilarArrays{T,M,N}) where {T,M,N} = split_tuple(size(A.dat
105
103
106
104
107
105
Base. @propagate_inbounds Base. getindex (A:: ArrayOfSimilarArrays{T,M,N} , idxs:: Vararg{Integer,N} ) where {T,M,N} =
108
- A . viewfunc (A. data, _ncolons (Val {M} ())... , idxs... )
106
+ view (A. data, _ncolons (Val {M} ())... , idxs... )
109
107
110
108
111
109
Base. @propagate_inbounds Base. setindex! (A:: ArrayOfSimilarArrays{T,M,N} , x:: AbstractArray{U,M} , idxs:: Vararg{Integer,N} ) where {T,M,N,U} =
112
110
setindex! (A. data, x, _ncolons (Val {M} ())... , idxs... )
113
111
114
112
115
113
@static if VERSION < v " 0.7.0-DEV.2791"
116
- Base. repremptyarray (io:: IO , X:: ArrayOfSimilarArrays{T,M,N,L,P,VF } ) where {T,M,N,L,P,VF } = print (io, " ElasticArray{$T ,$M ,$N ,$L ,$P , $VF }(" , join (size (X),' ,' ), ' )' )
114
+ Base. repremptyarray (io:: IO , X:: ArrayOfSimilarArrays{T,M,N,L,P} ) where {T,M,N,L,P} = print (io, " ElasticArray{$T ,$M ,$N ,$L ,$P }(" , join (size (X),' ,' ), ' )' )
117
115
end
118
116
119
117
126
124
function Base. similar (A:: ArrayOfSimilarArrays{T,M,N} , :: Type{<:AbstractArray{U}} , dims:: Dims ) where {T,M,N,U}
127
125
data = A. data
128
126
size_inner, size_outer = split_tuple (size (data), Val {M} ())
129
- ArrayOfSimilarArrays {M} (similar (data, U, size_inner... , dims... ), A . viewfunc )
127
+ ArrayOfSimilarArrays {M} (similar (data, U, size_inner... , dims... ))
130
128
end
131
129
132
130
@@ -157,37 +155,27 @@ Base.prepend!(dest::ArrayOfSimilarArrays{T,M,N}, src::AbstractArray{<:AbstractAr
157
155
prepend! (dest, ArrayOfSimilarArrays (src))
158
156
159
157
160
- # viewwith(A::ArrayOfSimilarArrays{T,M,N}, viewfunc::Function) where {T,M,N} =
161
- # ArrayOfSimilarArrays{M}(A.data, viewfunc)
162
-
163
-
164
- # TODO : implement:
165
- #
166
- # Base.unsafe_view(A::ArrayOfSimilarArrays{T,M,N}, I::Vararg{Base.ViewIndex,N}) where {T,M,N}
167
- # Base.unsafe_view(A::ArrayOfSimilarArrays{T,M,N}, i::Base.ViewIndex) where {T,M,N}
168
-
169
-
170
158
UnsafeArrays. unsafe_uview (A:: ArrayOfSimilarArrays{T,M,N} ) where {T,M,N} =
171
- ArrayOfSimilarArrays {M} (uview (A. data), uview)
159
+ ArrayOfSimilarArrays {M} (uview (A. data))
160
+
172
161
173
162
174
163
const VectorOfSimilarArrays{
175
164
T, M, L,
176
- P<: AbstractArray{T,L} ,
177
- VF<: Function
178
- } = ArrayOfSimilarArrays{T,M,1 ,L,P,VF}
165
+ P<: AbstractArray{T,L}
166
+ } = ArrayOfSimilarArrays{T,M,1 ,L,P}
179
167
180
168
export VectorOfSimilarArrays
181
169
182
- VectorOfSimilarArrays (parent:: AbstractArray{T,L} , viewfunc :: VF = view ) where {T,L,VF <: Function } =
183
- ArrayOfSimilarArrays {L-1} (parent, viewfunc )
170
+ VectorOfSimilarArrays (parent:: AbstractArray{T,L} ) where {T,L} =
171
+ ArrayOfSimilarArrays {L-1} (parent)
184
172
185
173
186
174
@inline Base. IndexStyle (V:: VectorOfSimilarArrays ) = IndexLinear ()
187
175
188
176
189
177
Base. @propagate_inbounds Base. getindex (A:: VectorOfSimilarArrays{T,M} , rng:: Union{Colon,UnitRange{<:Integer}} ) where {T,M} =
190
- VectorOfSimilarArrays (A . viewfunc (A. data, _ncolons (Val {M} ())... , rng), A . viewfunc )
178
+ VectorOfSimilarArrays (view (A. data, _ncolons (Val {M} ())... , rng))
191
179
192
180
193
181
function Base. push! (V:: VectorOfSimilarArrays{T,M} , x:: AbstractArray{U,M} ) where {T,M,U}
@@ -216,24 +204,22 @@ end
216
204
217
205
const ArrayOfSimilarVectors{
218
206
T, N, L,
219
- P<: AbstractArray{T,L} ,
220
- VF<: Function ,
221
- } = ArrayOfSimilarArrays{T,1 ,N,L,P,VF}
207
+ P<: AbstractArray{T,L}
208
+ } = ArrayOfSimilarArrays{T,1 ,N,L,P}
222
209
223
210
export ArrayOfSimilarVectors
224
211
225
- ArrayOfSimilarVectors (parent:: AbstractArray{T,L} , viewfunc :: VF = view ) where {T,L,VF <: Function } =
226
- ArrayOfSimilarArrays {1} (parent, viewfunc )
212
+ ArrayOfSimilarVectors (parent:: AbstractArray{T,L} ) where {T,L} =
213
+ ArrayOfSimilarArrays {1} (parent)
227
214
228
215
229
216
230
217
const VectorOfSimilarVectors{
231
218
T,
232
- P<: AbstractArray{T,2} ,
233
- VF<: Function ,
234
- } = ArrayOfSimilarArrays{T,1 ,1 ,2 ,P,VF}
219
+ P<: AbstractArray{T,2}
220
+ } = ArrayOfSimilarArrays{T,1 ,1 ,2 ,P}
235
221
236
222
export VectorOfSimilarVectors
237
223
238
- VectorOfSimilarVectors (parent:: AbstractArray{T,2} , viewfunc :: VF = view ) where {T,VF <: Function } =
239
- ArrayOfSimilarArrays {1} (parent, viewfunc )
224
+ VectorOfSimilarVectors (parent:: AbstractArray{T,2} ) where {T} =
225
+ ArrayOfSimilarArrays {1} (parent)
0 commit comments