You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Support integers in similar, blockedindexing of Matrix (#196)
* Support integers in similar, blockedindexing of Matrix
* Remove QR test to support ArrayLayouts v0.7.7 change to LU
* resize! for PseudoBlockVector, avoid `@inbounds`
* add docs, increase cov
Copy file name to clipboardExpand all lines: src/blockarray.jl
+15-17Lines changed: 15 additions & 17 deletions
Original file line number
Diff line number
Diff line change
@@ -351,31 +351,29 @@ end
351
351
###########################
352
352
353
353
354
-
@inline Base.similar(block_array::AbstractArray, ::Type{T}, axes::Tuple{BlockedUnitRange,Vararg{AbstractUnitRange{Int}}}) where T =
355
-
BlockArray{T}(undef, axes)
356
-
@inline Base.similar(block_array::AbstractArray, ::Type{T}, axes::Tuple{BlockedUnitRange,BlockedUnitRange,Vararg{AbstractUnitRange{Int}}}) where T =
357
-
BlockArray{T}(undef, axes)
358
-
@inline Base.similar(block_array::AbstractArray, ::Type{T}, axes::Tuple{AbstractUnitRange{Int},BlockedUnitRange,Vararg{AbstractUnitRange{Int}}}) where T =
359
-
BlockArray{T}(undef, axes)
360
-
@inline Base.similar(block_array::AbstractArray, ::Type{T}, axes::Tuple{Int,BlockedUnitRange,Vararg{AbstractUnitRange{Int}}}) where T =
@inline Base.similar(block_array::Type{<:AbstractArray{T}}, axes::Tuple{BlockedUnitRange,Vararg{AbstractUnitRange{Int}}}) where T =
364
-
BlockArray{T}(undef, axes)
365
-
@inline Base.similar(block_array::Type{<:AbstractArray{T}}, axes::Tuple{BlockedUnitRange,BlockedUnitRange,Vararg{AbstractUnitRange{Int}}}) where T =
366
-
BlockArray{T}(undef, axes)
367
-
@inline Base.similar(block_array::Type{<:AbstractArray{T}}, axes::Tuple{AbstractUnitRange{Int},BlockedUnitRange,Vararg{AbstractUnitRange{Int}}}) where T =
368
-
BlockArray{T}(undef, axes)
354
+
@inline Base.similar(block_array::AbstractArray, ::Type{T}, axes::Tuple{BlockedUnitRange,Vararg{Union{AbstractUnitRange{Int},Integer}}}) where T =
355
+
BlockArray{T}(undef, map(to_axes,axes))
356
+
@inline Base.similar(block_array::AbstractArray, ::Type{T}, axes::Tuple{BlockedUnitRange,BlockedUnitRange,Vararg{Union{AbstractUnitRange{Int},Integer}}}) where T =
357
+
BlockArray{T}(undef, map(to_axes,axes))
358
+
@inline Base.similar(block_array::AbstractArray, ::Type{T}, axes::Tuple{Union{AbstractUnitRange{Int},Integer},BlockedUnitRange,Vararg{Union{AbstractUnitRange{Int},Integer}}}) where T =
359
+
BlockArray{T}(undef, map(to_axes,axes))
360
+
361
+
@inline Base.similar(block_array::Type{<:AbstractArray{T}}, axes::Tuple{BlockedUnitRange,Vararg{Union{AbstractUnitRange{Int},Integer}}}) where T =
362
+
BlockArray{T}(undef, map(to_axes,axes))
363
+
@inline Base.similar(block_array::Type{<:AbstractArray{T}}, axes::Tuple{BlockedUnitRange,BlockedUnitRange,Vararg{Union{AbstractUnitRange{Int},Integer}}}) where T =
364
+
BlockArray{T}(undef, map(to_axes,axes))
365
+
@inline Base.similar(block_array::Type{<:AbstractArray{T}}, axes::Tuple{Union{AbstractUnitRange{Int},Integer},BlockedUnitRange,Vararg{Union{AbstractUnitRange{Int},Integer}}}) where T =
@inline Base.similar(block_array::Type{<:Array{T}}, axes::Tuple{BlockedUnitRange,Vararg{AbstractUnitRange{Int}}}) where T =
149
-
PseudoBlockArray{T}(undef, axes)
150
-
@inline Base.similar(block_array::Type{<:Array{T}}, axes::Tuple{BlockedUnitRange,BlockedUnitRange,Vararg{AbstractUnitRange{Int}}}) where T =
151
-
PseudoBlockArray{T}(undef, axes)
152
-
@inline Base.similar(block_array::Type{<:Array{T}}, axes::Tuple{AbstractUnitRange{Int},BlockedUnitRange,Vararg{AbstractUnitRange{Int}}}) where T =
153
-
PseudoBlockArray{T}(undef, axes)
154
-
155
-
@inline Base.similar(block_array::Array, ::Type{T}, axes::Tuple{BlockedUnitRange,Vararg{AbstractUnitRange{Int}}}) where T =
156
-
PseudoBlockArray{T}(undef, axes)
157
-
@inline Base.similar(block_array::Array, ::Type{T}, axes::Tuple{BlockedUnitRange,BlockedUnitRange,Vararg{AbstractUnitRange{Int}}}) where T =
158
-
PseudoBlockArray{T}(undef, axes)
159
-
@inline Base.similar(block_array::Array, ::Type{T}, axes::Tuple{AbstractUnitRange{Int},BlockedUnitRange,Vararg{AbstractUnitRange{Int}}}) where T =
160
-
PseudoBlockArray{T}(undef, axes)
161
-
162
-
@inline Base.similar(block_array::PseudoBlockArray, ::Type{T}, axes::Tuple{BlockedUnitRange,Vararg{AbstractUnitRange{Int}}}) where T =
163
-
PseudoBlockArray{T}(undef, axes)
164
-
@inline Base.similar(block_array::PseudoBlockArray, ::Type{T}, axes::Tuple{BlockedUnitRange,BlockedUnitRange,Vararg{AbstractUnitRange{Int}}}) where T =
165
-
PseudoBlockArray{T}(undef, axes)
166
-
@inline Base.similar(block_array::PseudoBlockArray, ::Type{T}, axes::Tuple{AbstractUnitRange{Int},BlockedUnitRange,Vararg{AbstractUnitRange{Int}}}) where T =
167
-
PseudoBlockArray{T}(undef, axes)
168
-
169
-
@inlinefunction Base.getindex(block_arr::PseudoBlockArray{T, N}, i::Vararg{Integer, N}) where {T,N}
170
-
@boundscheckcheckbounds(block_arr, i...)
171
-
@inbounds v = block_arr.blocks[i...]
172
-
return v
173
-
end
174
-
175
-
176
-
@inlinefunction Base.setindex!(block_arr::PseudoBlockArray{T, N}, v, i::Vararg{Integer, N}) where {T,N}
177
-
@boundscheckcheckbounds(block_arr, i...)
178
-
@inbounds block_arr.blocks[i...] = v
179
-
return block_arr
180
-
end
148
+
to_axes(r::AbstractUnitRange) = r
149
+
to_axes(n::Integer) = Base.oneto(n)
150
+
151
+
@inline Base.similar(block_array::Type{<:Array{T}}, axes::Tuple{BlockedUnitRange,Vararg{Union{Integer,AbstractUnitRange{Int}}}}) where T =
152
+
PseudoBlockArray{T}(undef, map(to_axes,axes))
153
+
@inline Base.similar(block_array::Type{<:Array{T}}, axes::Tuple{BlockedUnitRange,BlockedUnitRange,Vararg{Union{Integer,AbstractUnitRange{Int}}}}) where T =
154
+
PseudoBlockArray{T}(undef, map(to_axes,axes))
155
+
@inline Base.similar(block_array::Type{<:Array{T}}, axes::Tuple{Union{Integer,AbstractUnitRange{Int}},BlockedUnitRange,Vararg{Union{Integer,AbstractUnitRange{Int}}}}) where T =
156
+
PseudoBlockArray{T}(undef, map(to_axes,axes))
157
+
158
+
@inline Base.similar(block_array::Array, ::Type{T}, axes::Tuple{BlockedUnitRange,Vararg{Union{Integer,AbstractUnitRange{Int}}}}) where T =
159
+
PseudoBlockArray{T}(undef, map(to_axes,axes))
160
+
@inline Base.similar(block_array::Array, ::Type{T}, axes::Tuple{BlockedUnitRange,BlockedUnitRange,Vararg{Union{Integer,AbstractUnitRange{Int}}}}) where T =
161
+
PseudoBlockArray{T}(undef, map(to_axes,axes))
162
+
@inline Base.similar(block_array::Array, ::Type{T}, axes::Tuple{Union{Integer,AbstractUnitRange{Int}},BlockedUnitRange,Vararg{Union{Integer,AbstractUnitRange{Int}}}}) where T =
163
+
PseudoBlockArray{T}(undef, map(to_axes,axes))
164
+
165
+
@inline Base.similar(block_array::PseudoBlockArray, ::Type{T}, axes::Tuple{BlockedUnitRange,Vararg{Union{Integer,AbstractUnitRange{Int}}}}) where T =
166
+
PseudoBlockArray{T}(undef, map(to_axes,axes))
167
+
@inline Base.similar(block_array::PseudoBlockArray, ::Type{T}, axes::Tuple{BlockedUnitRange,BlockedUnitRange,Vararg{Union{Integer,AbstractUnitRange{Int}}}}) where T =
168
+
PseudoBlockArray{T}(undef, map(to_axes,axes))
169
+
@inline Base.similar(block_array::PseudoBlockArray, ::Type{T}, axes::Tuple{Union{Integer,AbstractUnitRange{Int}},BlockedUnitRange,Vararg{Union{Integer,AbstractUnitRange{Int}}}}) where T =
170
+
PseudoBlockArray{T}(undef, map(to_axes,axes))
171
+
172
+
@inline Base.@propagate_inbounds Base.getindex(block_arr::PseudoBlockArray{T, N}, i::Vararg{Integer, N}) where {T,N} = block_arr.blocks[i...]
0 commit comments