diff --git a/src/InfiniteArrays.jl b/src/InfiniteArrays.jl index abf3a8c..7765b6c 100644 --- a/src/InfiniteArrays.jl +++ b/src/InfiniteArrays.jl @@ -211,7 +211,7 @@ end return LazyArrays.searchsortedlast_recursive(n, x, args...) end - +include("biinfrange.jl") end # module diff --git a/src/biinfrange.jl b/src/biinfrange.jl new file mode 100644 index 0000000..bdc8f52 --- /dev/null +++ b/src/biinfrange.jl @@ -0,0 +1,21 @@ +""" +BiInfUnitRange() + +Represent -∞:∞ with offset indexing +""" +struct BiInfUnitRange{T<:Real} <: AbstractInfUnitRange{T} end + +BiInfUnitRange() = BiInfUnitRange{Int}() + +AbstractArray{T}(a::BiInfUnitRange) where T<:Real = BiInfUnitRange{T}(a) +AbstractVector{T}(a::BiInfUnitRange) where T<:Real = BiInfUnitRange{T}(a) + +unitrange(a::BiInfUnitRange) = a +Base.has_offset_axes(::BiInfUnitRange) = true + +getindex(v::BiInfUnitRange{T}, i::Integer) where T = convert(T, i) +axes(::BiInfUnitRange) = (BiInfUnitRange(),) +first(::BiInfUnitRange) = -∞ +show(io::IO, ::BiInfUnitRange{Int}) = print(io, "BiInfUnitRange()") + +getindex(r::BiInfUnitRange{T}, s::AbstractUnitRange{<:Integer}) where T = convert(AbstractVector{T}, s) \ No newline at end of file diff --git a/test/test_biinfrange.jl b/test/test_biinfrange.jl new file mode 100644 index 0000000..0a2b3d3 --- /dev/null +++ b/test/test_biinfrange.jl @@ -0,0 +1,8 @@ +using InfiniteArrays, Base64, Test +using InfiniteArrays: BiInfUnitRange + +@testset "-∞:∞" begin + r = BiInfUnitRange() + @test stringmime("text/plain", r) == "BiInfUnitRange()" + +end \ No newline at end of file