@@ -237,11 +237,14 @@ Base.show(io::IO, x::LazyAxis{N}) where {N} = print(io, "LazyAxis{$N}($(parent(x
237
237
Produces a tuple of axes where each axis is constructed lazily. If an axis of `x` is already
238
238
constructed or it is simply retrieved.
239
239
"""
240
- @generated function lazy_axes (x:: X ) where {X}
241
- Expr (:block , Expr (:meta , :inline ), Expr (:tuple , [:(LazyAxis {$dim} (x)) for dim in 1 : ndims (X)]. .. ))
242
- end
240
+ @inline lazy_axes (x) = lazy_axes (x, ntuple (static, StaticInt (ndims (x))))
243
241
lazy_axes (x:: Union{LinearIndices,CartesianIndices,AbstractRange} ) = axes (x)
244
- @inline lazy_axes (x:: VecAdjTrans ) = (SOneTo {1} (), first (lazy_axes (parent (x))))
245
- @inline function lazy_axes (x:: Union{PermutedDimsArray,MatAdjTrans} )
246
- map (GetIndex {false} (lazy_axes (parent (x))), to_parent_dims (x))
247
- end
242
+ @inline function lazy_axes (x:: PermutedDimsArray , :: StaticInt{N} ) where {N}
243
+ N <= ndims (x) ? lazy_axes (parent (x), getfield (to_parent_dims (x), N)) : SOneTo {1} ()
244
+ end
245
+ lazy_axes (x:: Union{Adjoint,Transpose} , :: StaticInt{1} ) = lazy_axes (parent (x), StaticInt (2 ))
246
+ lazy_axes (x:: Union{Adjoint,Transpose} , :: StaticInt{2} ) = lazy_axes (parent (x), StaticInt (1 ))
247
+ lazy_axes (x:: AbstractRange , :: StaticInt{1} ) = Base. axes1 (x)
248
+ lazy_axes (x, :: Colon ) = LazyAxis {:} (x)
249
+ lazy_axes (x, :: StaticInt{dim} ) where {dim} = ndims (x) < dim ? SOneTo {1} () : LazyAxis {dim} (x)
250
+ @inline lazy_axes (x, dims:: Tuple ) = map (Base. Fix1 (lazy_axes, x), dims)
0 commit comments