Skip to content

Commit 894cf6c

Browse files
add missing vecarr_to_arr method
1 parent 18c47f8 commit 894cf6c

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

src/vector_of_array.jl

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ end
5353

5454
# conversion tools
5555
vecarr_to_arr(VA::AbstractVectorOfArray) = cat(length(size(VA)), VA.u...)
56+
vecarr_to_arr{T<:AbstractArray}(VA::Vector{T}) = cat(length(size(VA[1]))+1,VA...)
5657
vecarr_to_vectors(VA::AbstractVectorOfArray) = [VA[i,:] for i in eachindex(VA[1])]
5758

5859
# make it show just like its data
@@ -81,3 +82,28 @@ end
8182
A = vecarr_to_vectors(VA)
8283
VA.t,A
8384
end
85+
86+
# Broadcast
87+
88+
#add_idxs(x,expr) = expr
89+
#add_idxs{T<:AbstractVectorOfArray}(::Type{T},expr) = :($(expr)[i])
90+
#add_idxs{T<:AbstractArray}(::Type{Vector{T}},expr) = :($(expr)[i])
91+
#=
92+
@generated function Base.broadcast!(f,A::AbstractVectorOfArray,B...)
93+
exs = ((add_idxs(B[i],:(B[$i])) for i in eachindex(B))...)
94+
:(for i in eachindex(A)
95+
broadcast!(f,A[i],$(exs...))
96+
end)
97+
end
98+
99+
@generated function Base.broadcast(f,B::Union{Number,AbstractVectorOfArray}...)
100+
arr_idx = 0
101+
for (i,b) in enumerate(B)
102+
if b <: ArrayPartition
103+
arr_idx = i
104+
break
105+
end
106+
end
107+
:(A = similar(B[$arr_idx]); broadcast!(f,A,B...); A)
108+
end
109+
=#

0 commit comments

Comments
 (0)