@@ -214,6 +214,13 @@ function to_blockindexrange(
214
214
# work right now.
215
215
return blocks (a. block)[Int (I)]
216
216
end
217
+ function to_blockindexrange (
218
+ a:: BlockIndices{<:BlockVector{<:BlockIndex{1},<:Vector{<:BlockIndexRange}}} , I:: Block{1}
219
+ )
220
+ # TODO : Ideally we would just use `a.blocks[I]` but that doesn't
221
+ # work right now.
222
+ return blocks (a. blocks)[Int (I)]
223
+ end
217
224
function to_blockindexrange (
218
225
a:: BlockIndices{<:BlockVector{<:BlockIndex{1},<:Vector{<:BlockIndexVector}}} , I:: Block{1}
219
226
)
@@ -254,18 +261,10 @@ function BlockArrays.viewblock(
254
261
return view (viewblock (a, Block .(block)... ), map (b -> only (b. indices), block)... )
255
262
end
256
263
257
- # Block slice of the result of slicing `@view a[2:5, 2:5]`.
258
- # TODO : Move this to `BlockArraysExtensions`.
259
- const BlockIndexRangeSlice = BlockSlice{
260
- <: BlockVector{<:BlockIndex{1},<:Vector{<:BlockIndexRange{1}}}
261
- }
262
- const BlockIndexVectorSlice = BlockSlice{
263
- <: BlockVector{<:BlockIndex{1},<:Vector{<:BlockIndexVector}}
264
- }
265
- const BlockedSlice = Union{BlockIndexRangeSlice,BlockIndexVectorSlice}
266
-
267
264
function Base. view (
268
- a:: SubArray{T,N,<:AbstractBlockSparseArray{T,N},<:Tuple{Vararg{BlockedSlice,N}}} ,
265
+ a:: SubArray {
266
+ T,N,<: AbstractBlockSparseArray{T,N} ,<: Tuple{Vararg{SubBlockSliceCollection,N}}
267
+ },
269
268
block:: Union{Block{N},BlockIndexRange{N}} ,
270
269
) where {T,N}
271
270
return viewblock (a, block)
@@ -277,13 +276,17 @@ function Base.view(
277
276
return viewblock (a, block)
278
277
end
279
278
function Base. view (
280
- a:: SubArray{T,N,<:AbstractBlockSparseArray{T,N},<:Tuple{Vararg{BlockedSlice,N}}} ,
279
+ a:: SubArray {
280
+ T,N,<: AbstractBlockSparseArray{T,N} ,<: Tuple{Vararg{SubBlockSliceCollection,N}}
281
+ },
281
282
block:: Vararg{Union{Block{1},BlockIndexRange{1},BlockIndexVector},N} ,
282
283
) where {T,N}
283
284
return viewblock (a, block... )
284
285
end
285
286
function BlockArrays. viewblock (
286
- a:: SubArray{T,N,<:AbstractBlockSparseArray{T,N},<:Tuple{Vararg{BlockedSlice,N}}} ,
287
+ a:: SubArray {
288
+ T,N,<: AbstractBlockSparseArray{T,N} ,<: Tuple{Vararg{SubBlockSliceCollection,N}}
289
+ },
287
290
block:: Union{Block{N},BlockIndexRange{N}} ,
288
291
) where {T,N}
289
292
return viewblock (a, to_tuple (block)... )
@@ -294,7 +297,9 @@ blockedslice_blocks(x::BlockIndices) = x.blocks
294
297
295
298
# TODO : Define `@interface BlockSparseArrayInterface() viewblock`.
296
299
function BlockArrays. viewblock (
297
- a:: SubArray{T,N,<:AbstractBlockSparseArray{T,N},<:Tuple{Vararg{BlockedSlice,N}}} ,
300
+ a:: SubArray {
301
+ T,N,<: AbstractBlockSparseArray{T,N} ,<: Tuple{Vararg{SubBlockSliceCollection,N}}
302
+ },
298
303
I:: Vararg{Block{1},N} ,
299
304
) where {T,N}
300
305
# TODO : Use `reindex`, `to_indices`, etc.
@@ -308,7 +313,9 @@ function BlockArrays.viewblock(
308
313
end
309
314
# TODO : Define `@interface BlockSparseArrayInterface() viewblock`.
310
315
function BlockArrays. viewblock (
311
- a:: SubArray{T,N,<:AbstractBlockSparseArray{T,N},<:Tuple{Vararg{BlockedSlice,N}}} ,
316
+ a:: SubArray {
317
+ T,N,<: AbstractBlockSparseArray{T,N} ,<: Tuple{Vararg{SubBlockSliceCollection,N}}
318
+ },
312
319
block:: Vararg{BlockIndexRange{1},N} ,
313
320
) where {T,N}
314
321
return view (viewblock (a, Block .(block)... ), map (b -> only (b. indices), block)... )
0 commit comments