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,N} (Array {T} (undef, _size_inner (A)... , size (A)... ))
72
+ B = ArrayOfSimilarArrays {T,M,N} (Array {T} (undef, innersize (A)... , size (A)... ))
73
73
copyto! (B, A)
74
74
end
75
75
@@ -87,25 +87,13 @@ Base.convert(R::Type{ArrayOfSimilarArrays{T}}, A::AbstractArray{<:AbstractArray{
87
87
Base. convert (R:: Type{ArrayOfSimilarArrays} , A:: AbstractArray{<:AbstractArray{T,M},N} ) where {T,M,N} = R (A)
88
88
89
89
90
- function _size_inner (A:: AbstractArray{<:AbstractArray{T,M},N} ) where {T,M,N}
91
- s = if ! isempty (A)
92
- sz_A = size (A[1 ])
93
- ntuple (i -> Int (sz_A[i]), Val (M))
94
- else
95
- ntuple (_ -> zero (Int), Val (M))
96
- end
97
-
98
- all (X -> size (X) == s, A) || throw (DimensionMismatch (" Shape of element arrays of A is not equal, can't determine common shape" ))
99
- s
100
- end
101
-
102
- @inline function _size_inner (A:: ArrayOfSimilarArrays{T,M,N} ) where {T,M,N}
90
+ @inline function innersize (A:: ArrayOfSimilarArrays{T,M,N} ) where {T,M,N}
103
91
front_tuple (size (A. data), Val {M} ())
104
92
end
105
93
106
94
107
- @inline function _length_inner (A:: AbstractArray{<:AbstractArray{T,M},N} ) where {T,M,N}
108
- prod (_size_inner (A))
95
+ @inline function _innerlength (A:: AbstractArray{<:AbstractArray{T,M},N} ) where {T,M,N}
96
+ prod (innersize (A))
109
97
end
110
98
111
99
144
132
145
133
146
134
@inline function Base. resize! (A:: ArrayOfSimilarArrays{T,M,N} , dims:: Vararg{Integer,N} ) where {T,M,N}
147
- resize! (A. data, _size_inner (A)... , dims... )
135
+ resize! (A. data, innersize (A)... , dims... )
148
136
A
149
137
end
150
138
@@ -157,14 +145,14 @@ end
157
145
158
146
159
147
function Base. resize! (dest:: ArrayOfSimilarArrays{T,M,N} , src:: ArrayOfSimilarArrays{U,M,N} ) where {T,M,N,U}
160
- _size_inner (dest) != _size_inner (src) && throw (DimensionMismatch (" Can't append, shape of element arrays of source and dest are not equal" ))
148
+ innersize (dest) != innersize (src) && throw (DimensionMismatch (" Can't append, shape of element arrays of source and dest are not equal" ))
161
149
append! (dest. data, src. data)
162
150
dest
163
151
end
164
152
165
153
166
154
function Base. append! (dest:: ArrayOfSimilarArrays{T,M,N} , src:: ArrayOfSimilarArrays{U,M,N} ) where {T,M,N,U}
167
- _size_inner (dest) != _size_inner (src) && throw (DimensionMismatch (" Can't append, shape of element arrays of source and dest are not equal" ))
155
+ innersize (dest) != innersize (src) && throw (DimensionMismatch (" Can't append, shape of element arrays of source and dest are not equal" ))
168
156
append! (dest. data, src. data)
169
157
dest
170
158
end
@@ -174,7 +162,7 @@ Base.append!(dest::ArrayOfSimilarArrays{T,M,N}, src::AbstractArray{<:AbstractArr
174
162
175
163
176
164
function Base. prepend! (dest:: ArrayOfSimilarArrays{T,M,N} , src:: ArrayOfSimilarArrays{U,M,N} ) where {T,M,N,U}
177
- _size_inner (dest) != _size_inner (src) && throw (DimensionMismatch (" Can't prepend, shape of element arrays of source and dest are not equal" ))
165
+ innersize (dest) != innersize (src) && throw (DimensionMismatch (" Can't prepend, shape of element arrays of source and dest are not equal" ))
178
166
prepend! (dest. data, src. data)
179
167
dest
180
168
end
@@ -278,7 +266,7 @@ Base.convert(R::Type{ArrayOfSimilarVectors}, A::AbstractArray{<:AbstractVector{T
278
266
279
267
# Base.@propagate_inbounds function _linear_data_idxs(A::ArrayOfSimilarVectors, i::Integer)
280
268
# @boundscheck checkbounds(A, i)
281
- # n_inner = _length_inner (A)
269
+ # n_inner = _innerlength (A)
282
270
# i0 = firstindex(A.data)
283
271
# from = (i - i0) * n_inner + i0
284
272
# to = from + n_inner - 1
@@ -288,7 +276,7 @@ Base.convert(R::Type{ArrayOfSimilarVectors}, A::AbstractArray{<:AbstractVector{T
288
276
289
277
# # Base.@propagate_inbounds function _linear_data_idxs(A::ArrayOfSimilarVectors, idxs::AbstractUnitRange{<:Integer})
290
278
# # @boundscheck checkbounds(A, idxs)
291
- # # n_inner = _length_inner (A)
279
+ # # n_inner = _innerlength (A)
292
280
# # i0 = firstindex(A.data)
293
281
# # a = first(idxs)
294
282
# # b = last(idxs) + 1
0 commit comments