Skip to content

Commit a74169b

Browse files
authored
Add convert routines for SubQuasiArray (#108)
1 parent d9ce29e commit a74169b

File tree

3 files changed

+20
-4
lines changed

3 files changed

+20
-4
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "QuasiArrays"
22
uuid = "c4ea9172-b204-11e9-377d-29865faadc5c"
33
authors = ["Sheehan Olver <[email protected]>"]
4-
version = "0.11.5"
4+
version = "0.11.6"
55

66
[deps]
77
ArrayLayouts = "4c555306-a7a7-4459-81d9-ec55ddd5c99a"

src/subquasiarray.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,11 @@ pointer(V::SubQuasiArray, i::Int) = _pointer(V, i)
298298
_pointer(V::SubQuasiArray{<:Any,1}, i::Int) = pointer(V, (i,))
299299
_pointer(V::SubQuasiArray, i::Int) = pointer(V, Base._ind2sub(axes(V), i))
300300

301+
convert(::Type{AbstractQuasiArray{T}}, V::SubQuasiArray{T}) where T = V
302+
convert(::Type{AbstractQuasiArray{T,N}}, V::SubQuasiArray{T,N}) where {T,N} = V
303+
convert(::Type{AbstractQuasiArray{T}}, V::SubQuasiArray) where T = SubQuasiArray(convert(AbstractQuasiArray{T}, parent(V)), V.indices)
304+
convert(::Type{AbstractQuasiArray{T,N}}, V::SubQuasiArray{<:Any,N}) where {T,N} = convert(AbstractQuasiArray{T}, V)
305+
301306

302307
# indices are taken from the range/vector
303308
# Since bounds-checking is performance-critical and uses

test/test_quasisubarray.jl

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -315,8 +315,19 @@ using QuasiArrays, Base64, Test
315315
@test view(A,:,:) == view(A,:,:)
316316
@test A view(A,Inclusion(0:0.5:0.5),:)
317317
@test view(A,Inclusion(0:0.5:0.5),:) A
318-
@test A  view(B,Inclusion(0:0.5:1),:)
319-
@test view(B,Inclusion(0:0.5:1),:)  A
320-
@test view(B,Inclusion(0:0.5:1),:)  view(A,Inclusion(0:0.5:0.5),:)
318+
@test A view(B,Inclusion(0:0.5:1),:)
319+
@test view(B,Inclusion(0:0.5:1),:) A
320+
@test view(B,Inclusion(0:0.5:1),:) view(A,Inclusion(0:0.5:0.5),:)
321+
end
322+
323+
@testset "SubQuasiArray convert" begin
324+
a = QuasiVector(randn(3), 0:0.5:1)
325+
v = view(a, :)
326+
@test convert(AbstractQuasiVector{Float64}, v) v
327+
@test convert(AbstractQuasiVector{ComplexF64}, v) isa SubQuasiArray{ComplexF64}
328+
@test convert(AbstractQuasiVector{ComplexF64}, v) == v
329+
@test convert(AbstractQuasiArray{Float64}, v) v
330+
@test convert(AbstractQuasiArray{ComplexF64}, v) isa SubQuasiArray{ComplexF64}
331+
@test convert(AbstractQuasiArray{ComplexF64}, v) == v
321332
end
322333
end

0 commit comments

Comments
 (0)