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} |
