changeset 123:5df4ccb19476 cell_based_test

Undo changes of 3560f54e3eb3 and change to result a little bit to avoid allocations. Trying different signatres reveals some strange interactions with julias dispatch: allocate: getrange(gridsize::Integer, closuresize::Integer, region::Type{<:Region}) no allocate: getrange(gridsize::Integer, closuresize::Integer, region::R) where R allocate: getrange(gridsize::Integer, closuresize::Integer, region::R) where R <: Type{<:Region} no allocate: getrange(gridsize::Integer, closuresize::Integer, region::DataType)
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 13 Feb 2019 10:58:57 +0100
parents 6c6979ff17f4
children 22642722a8ec
files index.jl
diffstat 1 files changed, 12 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/index.jl	Tue Feb 12 15:18:18 2019 +0100
+++ b/index.jl	Wed Feb 13 10:58:57 2019 +0100
@@ -48,6 +48,15 @@
     return CartesianIndices(regions)
 end
 
-getrange(gridsize::Integer, closuresize::Integer, ::Type{Lower}   ) = 1:closuresize
-getrange(gridsize::Integer, closuresize::Integer, ::Type{Interior}) = (closuresize+1):(gridsize - closuresize)
-getrange(gridsize::Integer, closuresize::Integer, ::Type{Upper}   ) = (gridsize - closuresize + 1):gridsize
+function getrange(gridsize::Integer, closuresize::Integer, region::DataType)
+    if region == Lower
+        r = 1:closuresize
+    elseif region == Interior
+        r = (closuresize+1):(gridsize - closuresize)
+    elseif region == Upper
+        r = (gridsize - closuresize + 1):gridsize
+    else
+        error("Unspecified region")
+    end
+    return r
+end