601601layerdims (s:: DimStack{<:Any,<:Any,<:Any,<:Any,<:Any,<:Any,Nothing} , name:: Symbol ) = dims (s)
602602
603603# ## Stack as Array
604+ """
605+ DimStackArray <: AbstractDimArrayGenerator
606+
607+ A wrapper that makes a `DimStack` behave like an `AbstractArray`.
608+
609+ Provides array-like access to a `DimStack`, where each element is a `NamedTuple` containing
610+ values from all layers at that position.
611+
612+ # Examples
613+ ```julia
614+ using DimensionalData
615+
616+ # Create a DimStack
617+ da1 = DimArray(ones(2,2), (X(1:2), Y(1:2)); name=:temp)
618+ da2 = DimArray(2ones(2,2), (X(1:2), Y(1:2)); name=:precip)
619+ stack = DimStack((da1, da2))
620+
621+ # Wrap as DimStackArray
622+ arr = DimStackArray(stack)
623+
624+ # Get values from all layers at position [1,1]
625+ arr[1,1] # Returns (temp=1.0, precip=2.0)
626+
627+ # Views maintain DimStack structure
628+ view(arr, 1:2, 1)
629+ ```
630+ """
604631struct DimStackArray{T,N,D,S<: AbstractDimStack } <: AbstractDimArrayGenerator{T,N,D}
605632 stack:: S
606633 function DimStackArray (stack:: AbstractDimStack{K,T,N,L,D} ) where {K,T,N,L,D}
@@ -653,4 +680,4 @@ Base.eltype(::Type{Base.SkipMissing{T}}) where {T<:AbstractDimStack{<:Any, NT}}
653680@generated _nonmissing_nt (NT:: Type{<:NamedTuple{K,V}} ) where {K,V} =
654681 NamedTuple{K, Tuple{map (Base. nonmissingtype, V. parameters)... }}
655682
656- Base. Broadcast. broadcastable (st:: AbstractDimStack ) = [st[D] for D in DimIndices (st)]
683+ Base. Broadcast. broadcastable (st:: AbstractDimStack ) = DimStackArray (st)
0 commit comments