Mercurial > repos > public > sbplib_julia
comparison src/Grids/equidistant_grid.jl @ 1255:1989d432731a refactor/grids
Implement the interfaces for iteration and indexing on EquidistantGrid. Make collect() work
| author | Jonatan Werpers <jonatan@werpers.com> |
|---|---|
| date | Wed, 22 Feb 2023 22:38:25 +0100 |
| parents | ff8f335c32d1 |
| children | 198ccda331a6 |
comparison
equal
deleted
inserted
replaced
| 1254:f98d8ede0e90 | 1255:1989d432731a |
|---|---|
| 4 #TODO: Document recomendations for type of range. (LinRange is faster?) | 4 #TODO: Document recomendations for type of range. (LinRange is faster?) |
| 5 struct EquidistantGrid{T,R<:AbstractRange{T}} <: Grid{T,1,1} | 5 struct EquidistantGrid{T,R<:AbstractRange{T}} <: Grid{T,1,1} |
| 6 points::R | 6 points::R |
| 7 end | 7 end |
| 8 | 8 |
| 9 Base.eltype(g::EquidistantGrid{T}) where T = T | |
| 10 Base.getindex(g::EquidistantGrid, i) = g.points[i] | |
| 11 Base.size(g::EquidistantGrid) = size(g.points) | |
| 12 Base.length(g::EquidistantGrid) = length(g.points) | |
| 13 Base.eachindex(g::EquidistantGrid) = eachindex(g.points) | 9 Base.eachindex(g::EquidistantGrid) = eachindex(g.points) |
| 14 | 10 |
| 11 # Indexing interface | |
| 12 Base.getindex(g::EquidistantGrid, i) = g.points[i] | |
| 15 Base.firstindex(g::EquidistantGrid) = firstindex(g.points) | 13 Base.firstindex(g::EquidistantGrid) = firstindex(g.points) |
| 16 Base.lastindex(g::EquidistantGrid) = lastindex(g.points) | 14 Base.lastindex(g::EquidistantGrid) = lastindex(g.points) |
| 17 | 15 |
| 18 # TODO: Make sure collect works! | 16 # Iteration interface |
| 17 Base.iterate(g::EquidistantGrid) = iterate(g.points) | |
| 18 Base.iterate(g::EquidistantGrid, state) = iterate(g.points, state) | |
| 19 | |
| 20 Base.IteratorSize(::Type{EquidistantGrid}) = Base.HasShape{1}() | |
| 21 Base.eltype(::Type{EquidistantGrid{T}}) where T = T | |
| 22 Base.length(g::EquidistantGrid) = length(g.points) | |
| 23 Base.size(g::EquidistantGrid) = size(g.points) | |
| 19 | 24 |
| 20 | 25 |
| 21 """ | 26 """ |
| 22 spacing(grid::EquidistantGrid) | 27 spacing(grid::EquidistantGrid) |
| 23 | 28 |
