@@ -27,20 +27,47 @@ OffsetArray(A::AbstractArray{T,N}, offsets::NTuple{N,Int}) where {T,N} =
27
27
OffsetArray (A:: AbstractArray{T,N} , offsets:: Vararg{Int,N} ) where {T,N} =
28
28
OffsetArray (A, offsets)
29
29
30
- OffsetArray {T,N} (inds:: Indices{N} ) where {T,N} =
30
+ OffsetArray {T,N} (:: Uninitialized , inds:: Indices{N} ) where {T,N} =
31
31
OffsetArray {T,N,Array{T,N}} (Array {T,N} (uninitialized, map (length, inds)), map (indexoffset, inds))
32
- OffsetArray {T} (inds:: Indices{N} ) where {T,N} = OffsetArray {T,N} (inds)
33
- OffsetArray {T,N} (inds:: Vararg{AbstractUnitRange,N} ) where {T,N} = OffsetArray {T,N} (inds)
34
- OffsetArray {T} (inds:: Vararg{AbstractUnitRange,N} ) where {T,N} = OffsetArray {T,N} (inds)
32
+ OffsetArray {T} (:: Uninitialized , inds:: Indices{N} ) where {T,N} = OffsetArray {T,N} (uninitialized, inds)
33
+ OffsetArray {T,N} (:: Uninitialized , inds:: Vararg{AbstractUnitRange,N} ) where {T,N} = OffsetArray {T,N} (uninitialized, inds)
34
+ OffsetArray {T} (:: Uninitialized , inds:: Vararg{AbstractUnitRange,N} ) where {T,N} = OffsetArray {T,N} (uninitialized, inds)
35
35
OffsetArray (A:: AbstractArray{T,0} ) where {T} = OffsetArray {T,0,typeof(A)} (A, ())
36
36
37
37
# OffsetVector constructors
38
38
OffsetVector (A:: AbstractVector , offset) = OffsetArray (A, offset)
39
- OffsetVector {T} (inds:: AbstractUnitRange ) where {T} = OffsetArray {T} (inds)
39
+ OffsetVector {T} (:: Uninitialized , inds:: AbstractUnitRange ) where {T} = OffsetArray {T} (uninitialized, inds)
40
+
41
+ # deprecated constructors
42
+ using Base: @deprecate
40
43
41
44
# https://github.com/JuliaLang/julia/pull/19989
42
- Base. @deprecate OffsetArray (:: Type{T} , inds:: Vararg{UnitRange{Int},N} ) where {T,N} OffsetArray {T} (inds)
43
- Base. @deprecate OffsetVector (:: Type{T} , inds:: AbstractUnitRange ) where {T} OffsetVector {T} (inds)
45
+ @static if isdefined (Base, :Uninitialized )
46
+ @deprecate OffsetArray (:: Type{T} , inds:: Vararg{UnitRange{Int},N} ) where {T,N} OffsetArray {T} (uninitialized, inds)
47
+ @deprecate OffsetVector (:: Type{T} , inds:: AbstractUnitRange ) where {T} OffsetVector {T} (uninitialized, inds)
48
+ else
49
+ OffsetArray (:: Type{T} , inds:: Vararg{UnitRange{Int},N} ) where {T,N} = OffsetArray {T} (inds)
50
+ OffsetVector (:: Type{T} , inds:: AbstractUnitRange ) where {T} = OffsetVector {T} (inds)
51
+ end
52
+
53
+ # https://github.com/JuliaLang/julia/pull/24652
54
+ # Only activate deprecation if `uninitialized` is available from Base;
55
+ # should not rely on the user having `uninitialized` available from Compat
56
+ # and OffsetArrays.jl should probably not re-export Compat.uninitialized
57
+ @static if isdefined (Base, :Uninitialized )
58
+ @deprecate OffsetArray {T,N} (inds:: Indices{N} ) where {T,N} OffsetArray {T,N} (uninitialized, inds)
59
+ @deprecate OffsetArray {T} (inds:: Indices{N} ) where {T,N} OffsetArray {T} (uninitialized, inds)
60
+ @deprecate OffsetArray {T,N} (inds:: Vararg{AbstractUnitRange,N} ) where {T,N} OffsetArray {T,N} (uninitialized, inds)
61
+ @deprecate OffsetArray {T} (inds:: Vararg{AbstractUnitRange,N} ) where {T,N} OffsetArray {T} (uninitialized, inds)
62
+ @deprecate OffsetVector {T} (inds:: AbstractUnitRange ) where {T} OffsetVector {T} (uninitialized, inds)
63
+ else
64
+ OffsetArray {T,N} (inds:: Indices{N} ) where {T,N} = OffsetArray {T,N} (uninitialized, inds)
65
+ OffsetArray {T} (inds:: Indices{N} ) where {T,N} = OffsetArray {T} (uninitialized, inds)
66
+ OffsetArray {T,N} (inds:: Vararg{AbstractUnitRange,N} ) where {T,N} = OffsetArray {T,N} (uninitialized, inds)
67
+ OffsetArray {T} (inds:: Vararg{AbstractUnitRange,N} ) where {T,N} = OffsetArray {T} (uninitialized, inds)
68
+ OffsetVector {T} (inds:: AbstractUnitRange ) where {T} = OffsetVector {T} (uninitialized, inds)
69
+ end
70
+
44
71
45
72
# The next two are necessary for ambiguity resolution. Really, the
46
73
# second method should not be necessary.
141
168
# ## Convenience functions ###
142
169
143
170
Base. fill (x, inds:: Tuple{UnitRange,Vararg{UnitRange}} ) =
144
- fill! (OffsetArray {typeof(x)} (inds), x)
171
+ fill! (OffsetArray {typeof(x)} (uninitialized, inds), x)
145
172
@inline Base. fill (x, ind1:: UnitRange , inds:: UnitRange... ) = fill (x, (ind1, inds... ))
146
173
147
174
# ## Low-level utilities ###
0 commit comments