comparison src/Grids/tensor_grid.jl @ 1399:adbdbf1c3480 bugfix/grids/complete_interface_impl

Replace `firstindex` and `lastindex` with implementation of `axes`
author Jonatan Werpers <jonatan@werpers.com>
date Tue, 22 Aug 2023 09:00:34 +0200
parents 60857d8338cb
children 18e21601da2d
comparison
equal deleted inserted replaced
1398:447833be2ecc 1399:adbdbf1c3480
29 function Base.eachindex(g::TensorGrid) 29 function Base.eachindex(g::TensorGrid)
30 szs = LazyTensors.concatenate_tuples(size.(g.grids)...) 30 szs = LazyTensors.concatenate_tuples(size.(g.grids)...)
31 return CartesianIndices(szs) 31 return CartesianIndices(szs)
32 end 32 end
33 33
34 function Base.firstindex(g::TensorGrid, d) 34 function Base.axes(g::TensorGrid, d)
35 i, ld = grid_and_local_dim_index(ndims.(g.grids), d) 35 i, ld = grid_and_local_dim_index(ndims.(g.grids), d)
36 return firstindex(g.grids[i], ld) 36 return axes(g.grids[i], ld)
37 end 37 end
38
39 function Base.lastindex(g::TensorGrid, d)
40 i, ld = grid_and_local_dim_index(ndims.(g.grids), d)
41 return lastindex(g.grids[i], ld)
42 end
43 # TBD: Should the two above functions be supported by implementing `axes` instead?
44 38
45 # Iteration interface 39 # Iteration interface
46 Base.iterate(g::TensorGrid) = iterate(Iterators.product(g.grids...)) |> _iterate_combine_coords 40 Base.iterate(g::TensorGrid) = iterate(Iterators.product(g.grids...)) |> _iterate_combine_coords
47 Base.iterate(g::TensorGrid, state) = iterate(Iterators.product(g.grids...), state) |> _iterate_combine_coords 41 Base.iterate(g::TensorGrid, state) = iterate(Iterators.product(g.grids...), state) |> _iterate_combine_coords
48 _iterate_combine_coords(::Nothing) = nothing 42 _iterate_combine_coords(::Nothing) = nothing