From db6d4bee84593ca2153a58109ee3051c6e065d93 Mon Sep 17 00:00:00 2001 From: Felix Cremer Date: Wed, 26 Jun 2024 15:53:34 +0200 Subject: [PATCH] Make readblock of EngineArray work for in memory arrays We want the readblock and writeblock of an EngineArray backed by a in memory array to work. --- src/enginearrays.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/enginearrays.jl b/src/enginearrays.jl index bf0d775..5369a7b 100644 --- a/src/enginearrays.jl +++ b/src/enginearrays.jl @@ -21,8 +21,8 @@ function engine(p::AbstractEngineArray;bcdims=nothing) end end Base.parent(p::EngineArray) = p.parent -DiskArrays.readblock!(a::EngineArray,xout,r::OrdinalRange...) = DiskArrays.readblock!(a.parent,xout,r...) -DiskArrays.writeblock!(a::EngineArray,xout,r::OrdinalRange...) = DiskArrays.writeblock!(a.parent,xout,r...) +DiskArrays.readblock!(a::EngineArray,xout,r::OrdinalRange...) = a.parent isa AbstractDiskArray ? DiskArrays.readblock!(a.parent,xout,r...) : xout .= a.parent[r...] +DiskArrays.writeblock!(a::EngineArray,xout,r::OrdinalRange...) = a.parent isa AbstractDiskArray ? DiskArrays.writeblock!(a.parent,xout,r...) : a.parent[r...] = xout Base.size(a::EngineArray) = size(a.parent) DiskArrays.eachchunk(a::EngineArray) = DiskArrays.eachchunk(a.parent) bcdims(a::EngineArray) = a.bcdims[] @@ -36,7 +36,7 @@ function collect_bcdims(A) end end oc = collect(o) - allunique(first.(oc)) || error("Lengths don't match") + allunique(last.(oc)) || error("Lengths don't match") sort!(oc,by=last) first.(oc), last.(oc) end