@@ -265,6 +265,12 @@ function BlockArray{T}(arr::AbstractArray{T, N}, baxes::Tuple{Vararg{AbstractUni
265265 return _BlockArray (blocks, baxes)
266266end
267267
268+ function BlockArray {T} (arr:: AbstractArray{T, 0} , :: Tuple{} ) where T
269+ blocks = Array {Array{T, 0},0} (undef)
270+ fill! (blocks, arr)
271+ return _BlockArray (blocks)
272+ end
273+
268274BlockArray {T} (arr:: AbstractArray{<:Any, N} , baxes:: Tuple{Vararg{AbstractUnitRange{<:Integer},N}} ) where {T,N} =
269275 BlockArray {T} (convert (AbstractArray{T, N}, arr), baxes)
270276
@@ -463,12 +469,21 @@ const OffsetAxis = Union{Integer, UnitRange, Base.OneTo, Base.IdentityUnitRange}
463469 return v
464470end
465471
472+ @inline function getindex (block_arr:: BlockArray{T, 0} ) where T
473+ return blocks (block_arr)[][]
474+ end
475+
466476@inline function setindex! (block_arr:: BlockArray{T, N} , v, i:: Vararg{Integer, N} ) where {T,N}
467477 @boundscheck checkbounds (block_arr, i... )
468478 @inbounds block_arr[findblockindex .(axes (block_arr), i)... ] = v
469479 return block_arr
470480end
471481
482+ @inline function setindex! (block_arr:: BlockArray{<:Any, 0} , v)
483+ blocks (block_arr)[][] = v
484+ end
485+
486+
472487# ###########
473488# Indexing #
474489# ###########
527542# #######
528543# Misc #
529544# #######
545+ function Base. Array (zerodim:: BlockArray{T, 0} ) where {T}
546+ arr = Array {T} (undef)
547+ arr[] = zerodim[]
548+ return arr
549+ end
530550
531551function Base. Array (block_array:: BlockArray{T, N, R} ) where {T,N,R}
532552 arr = Array {eltype(T)} (undef, size (block_array))
547567# Temporary work around
548568Base. reshape (block_array:: BlockArray , axes:: Tuple{Vararg{AbstractUnitRange{<:Integer},N}} ) where N =
549569 reshape (BlockedArray (block_array), axes)
570+ Base. reshape (block_array:: BlockArray , :: Tuple{} ) =
571+ reshape (BlockedArray (block_array), ()) # zerodim
550572Base. reshape (block_array:: BlockArray , dims:: Tuple{Int,Vararg{Int}} ) =
551573 reshape (BlockedArray (block_array), dims)
552574Base. reshape (block_array:: BlockArray , axes:: Tuple{Union{Integer,Base.OneTo}, Vararg{Union{Integer,Base.OneTo}}} ) =
0 commit comments