diff src/Grids/zero_dim_grid.jl @ 1260:8b9a77d2dc91 refactor/grids

Add tests and make them pass for ZeroDimGrid
author Jonatan Werpers <jonatan@werpers.com>
date Thu, 23 Feb 2023 12:22:18 +0100
parents 198ccda331a6
children 5e28ae42caf2
line wrap: on
line diff
--- a/src/Grids/zero_dim_grid.jl	Thu Feb 23 12:22:00 2023 +0100
+++ b/src/Grids/zero_dim_grid.jl	Thu Feb 23 12:22:18 2023 +0100
@@ -1,18 +1,20 @@
-struct ZeroDimGrid{T,S} <: Grid{T,0}
-    p::S
-
-    function ZeroDimGrid(p)
-        T = eltype(p)
-        S = typeof(p)
-        return new{T,S}(p)
-    end
+"""
+    ZeroDimGrid{T} <: Grid{T,0}
+# TODO
+"""
+struct ZeroDimGrid{T} <: Grid{T,0}
+    point::T
 end
 
-Base.size(g::ZeroDimGrid) = ()
-Base.getindex(g::ZeroDimGrid) = g.p
+# # Indexing interface
+Base.getindex(g::ZeroDimGrid) = g.point
 Base.eachindex(g::ZeroDimGrid) = CartesianIndices(())
 
-# Indexing interface
-# TODO
-# Iteration interface
-# TODO
+# # Iteration interface
+Base.iterate(g::ZeroDimGrid) = (g.point, nothing)
+Base.iterate(g::ZeroDimGrid, ::Any) = nothing
+
+Base.IteratorSize(::Type{ZeroDimGrid{T}}) where T = Base.HasShape{0}()
+Base.eltype(::Type{ZeroDimGrid{T}}) where T = T
+Base.length(g::ZeroDimGrid) = 1
+Base.size(g::ZeroDimGrid) = ()