Mercurial > repos > public > sbplib_julia
comparison RegionIndices/src/RegionIndices.jl @ 218:03375aa30edd package_refactor
Add Tests and exports to RegionIndices
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Wed, 26 Jun 2019 12:57:20 +0200 |
parents | 08b07c6eeec7 |
children | b3506cfbb9d8 |
comparison
equal
deleted
inserted
replaced
217:4c62d0253bd4 | 218:03375aa30edd |
---|---|
3 abstract type Region end | 3 abstract type Region end |
4 struct Interior <: Region end | 4 struct Interior <: Region end |
5 struct Lower <: Region end | 5 struct Lower <: Region end |
6 struct Upper <: Region end | 6 struct Upper <: Region end |
7 struct Unknown <: Region end | 7 struct Unknown <: Region end |
8 | |
9 export Region, Interior, Lower, Upper, Unknown | |
8 | 10 |
9 struct Index{R<:Region, T<:Integer} | 11 struct Index{R<:Region, T<:Integer} |
10 i::T | 12 i::T |
11 | 13 |
12 Index{R,T}(i::T) where {R<:Region,T<:Integer} = new{R,T}(i) | 14 Index{R,T}(i::T) where {R<:Region,T<:Integer} = new{R,T}(i) |
13 Index{R}(i::T) where {R<:Region,T<:Integer} = new{R,T}(i) | 15 Index{R}(i::T) where {R<:Region,T<:Integer} = new{R,T}(i) |
14 Index(i::T, ::Type{R}) where {R<:Region,T<:Integer} = Index{R,T}(i) | 16 Index(i::T, ::Type{R}) where {R<:Region,T<:Integer} = Index{R,T}(i) |
15 Index(t::Tuple{T, DataType}) where {R<:Region,T<:Integer} = Index{t[2],T}(t[1]) # TBD: This is not very specific in what types are allowed in t[2]. Can this be fixed? | 17 Index(t::Tuple{T, DataType}) where {R<:Region,T<:Integer} = Index{t[2],T}(t[1]) # TBD: This is not very specific in what types are allowed in t[2]. Can this be fixed? |
16 end | 18 end |
19 | |
20 export Index | |
17 | 21 |
18 # Index(R::Type{<:Region}) = Index{R} | 22 # Index(R::Type{<:Region}) = Index{R} |
19 | 23 |
20 ## Vill kunna skriva | 24 ## Vill kunna skriva |
21 ## IndexTupleType(Int, (Lower, Interior)) | 25 ## IndexTupleType(Int, (Lower, Interior)) |
30 function Index(i::Integer, boundary_width::Integer, dim_size::Integer) | 34 function Index(i::Integer, boundary_width::Integer, dim_size::Integer) |
31 return Index{getregion(i,boundary_width,dim_size)}(i) | 35 return Index{getregion(i,boundary_width,dim_size)}(i) |
32 end | 36 end |
33 | 37 |
34 IndexTuple(t::Vararg{Tuple{T, DataType}}) where T<:Integer = Index.(t) | 38 IndexTuple(t::Vararg{Tuple{T, DataType}}) where T<:Integer = Index.(t) |
39 export IndexTuple | |
35 | 40 |
36 # TODO: Use the values of the region structs, e.g. Lower(), for the region parameter instead of the types. | 41 # TODO: Use the values of the region structs, e.g. Lower(), for the region parameter instead of the types. |
37 # For example the following works: | 42 # For example the following works: |
38 # (Lower(),Upper()) isa NTuple{2, Region} -> true | 43 # (Lower(),Upper()) isa NTuple{2, Region} -> true |
39 # typeof((Lower(),Upper())) -> Tuple{Lower,Upper} | 44 # typeof((Lower(),Upper())) -> Tuple{Lower,Upper} |