@@ -16,7 +16,7 @@ Base.append!(dest::BlockVector, sources...; alias::Bool = false) =
16
16
17
17
function Base. append! (dest:: BlockVector , src; alias:: Bool = false )
18
18
if _blocktype (dest) === _blocktype (src) && alias
19
- return append_nocopy ! (dest, src)
19
+ return blockappend ! (dest, src)
20
20
else
21
21
return append_copy! (dest, src)
22
22
end
@@ -27,20 +27,27 @@ _blocktype(::T) where {T<:AbstractArray} = T
27
27
_blocktype (:: BlockArray{<:Any,<:Any,<:AbstractArray{T}} ) where {T<: AbstractArray } = T
28
28
_blocktype (:: PseudoBlockArray{<:Any,<:Any,T} ) where {T<: AbstractArray } = T
29
29
30
- function append_nocopy! (dest:: BlockVector{<:Any,T} , src:: BlockVector{<:Any,T} ) where {T}
30
+ """
31
+ blockappend!(dest::BlockVector, src)
32
+
33
+ Append blocks from `src` to `dest`. When `src` is a vector of the same type
34
+ as the blocks of `dest`, or a `PseudoBlockVector` with the same underlying
35
+ array type, a single vector block is appended to `dest`.
36
+ """
37
+ function blockappend! (dest:: BlockVector{<:Any,T} , src:: BlockVector{<:Any,T} ) where {T}
31
38
isempty (src) && return dest
32
39
append! (dest. blocks, src. blocks)
33
40
offset = last (dest. axes[1 ]) + 1 - src. axes[1 ]. first
34
41
append! (dest. axes[1 ]. lasts, (n + offset for n in src. axes[1 ]. lasts))
35
42
return dest
36
43
end
37
44
38
- append_nocopy ! (
45
+ blockappend ! (
39
46
dest:: BlockVector{<:Any,<:AbstractArray{T}} ,
40
47
src:: PseudoBlockVector{<:Any,T} ,
41
- ) where {T} = append_nocopy ! (dest, src. blocks)
48
+ ) where {T} = blockappend ! (dest, src. blocks)
42
49
43
- function append_nocopy ! (dest:: BlockVector{<:Any,<:AbstractArray{T}} , src:: T ) where {T}
50
+ function blockappend ! (dest:: BlockVector{<:Any,<:AbstractArray{T}} , src:: T ) where {T}
44
51
isempty (src) && return dest
45
52
push! (dest. blocks, src)
46
53
push! (dest. axes[1 ]. lasts, last (dest. axes[1 ]) + length (src))
0 commit comments