Skip to content

Commit 6fbd9f7

Browse files
committed
Remove viewfunc from ArrayOfSimilarArrays
1 parent c3b50cc commit 6fbd9f7

File tree

1 file changed

+23
-37
lines changed

1 file changed

+23
-37
lines changed

src/array_of_similar_arrays.jl

Lines changed: 23 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export AbstractVectorOfSimilarVectors
3232

3333

3434
@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}
3636
3737
Represents a view of an array of dimension `L = M + N` as an array of
3838
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`).
5353
"""
5454
struct ArrayOfSimilarArrays{
5555
T, M, N, L,
56-
P<:AbstractArray{T,L},
57-
VF<:Function
56+
P<:AbstractArray{T,L}
5857
} <: AbstractArrayOfSimilarArrays{T,M,N}
5958
data::P
60-
viewfunc::VF
6159

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}
6361
size_inner, size_outer = split_tuple(size(parent), Val{M}())
6462
N = length(size_outer)
6563
P = typeof(parent)
66-
new{T,M,N,L,P,VF}(parent, viewfunc)
64+
new{T,M,N,L,P}(parent)
6765
end
6866
end
6967

@@ -87,7 +85,7 @@ function _size_inner(A::ArrayOfSimilarArrays{T,M,N}) where {T,M,N}
8785
end
8886

8987

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}
9189
B = ArrayOfSimilarArrays{M}(Array{T,M+N}(_size_inner(A)..., size(A)...))
9290
copy!(B, A)
9391
end
@@ -105,15 +103,15 @@ Base.size(A::ArrayOfSimilarArrays{T,M,N}) where {T,M,N} = split_tuple(size(A.dat
105103

106104

107105
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...)
109107

110108

111109
Base.@propagate_inbounds Base.setindex!(A::ArrayOfSimilarArrays{T,M,N}, x::AbstractArray{U,M}, idxs::Vararg{Integer,N}) where {T,M,N,U} =
112110
setindex!(A.data, x, _ncolons(Val{M}())..., idxs...)
113111

114112

115113
@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),','), ')')
117115
end
118116

119117

@@ -126,7 +124,7 @@ end
126124
function Base.similar(A::ArrayOfSimilarArrays{T,M,N}, ::Type{<:AbstractArray{U}}, dims::Dims) where {T,M,N,U}
127125
data = A.data
128126
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...))
130128
end
131129

132130

@@ -157,37 +155,27 @@ Base.prepend!(dest::ArrayOfSimilarArrays{T,M,N}, src::AbstractArray{<:AbstractAr
157155
prepend!(dest, ArrayOfSimilarArrays(src))
158156

159157

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-
170158
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+
172161

173162

174163
const VectorOfSimilarArrays{
175164
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}
179167

180168
export VectorOfSimilarArrays
181169

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)
184172

185173

186174
@inline Base.IndexStyle(V::VectorOfSimilarArrays) = IndexLinear()
187175

188176

189177
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))
191179

192180

193181
function Base.push!(V::VectorOfSimilarArrays{T,M}, x::AbstractArray{U,M}) where {T,M,U}
@@ -216,24 +204,22 @@ end
216204

217205
const ArrayOfSimilarVectors{
218206
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}
222209

223210
export ArrayOfSimilarVectors
224211

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)
227214

228215

229216

230217
const VectorOfSimilarVectors{
231218
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}
235221

236222
export VectorOfSimilarVectors
237223

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

Comments
 (0)