@@ -623,6 +623,37 @@ function Base.replace_in_print_matrix(A::OffsetArray{<:Any,1}, i::Integer, j::In
623
623
Base. replace_in_print_matrix (parent (A), ip, j, s)
624
624
end
625
625
626
+ # Actual unsafe_wrap implementation
627
+ @inline function _unsafe_wrap (pointer:: Ptr{T} , inds:: NTuple{N} ; own = false , kw... ) where {T,N}
628
+ _checkindices (N, inds, " indices" )
629
+ AA = Base. unsafe_wrap (Array, pointer, map (_indexlength, inds); own= own)
630
+ OffsetArray {T, N, typeof(AA)} (AA, map (_indexoffset, inds); kw... )
631
+ end
632
+ const OffsetArrayUnion{T,N} = Union{Type{OffsetArray}, Type{OffsetArray{T}}, Type{OffsetArray{T,N}}, Type{OffsetArray{T1, N} where T1}} where {T,N}
633
+
634
+ """
635
+ Base.unsafe_wrap(OffsetArray, pointer::Ptr{T}, inds...; own=false, kw...)
636
+ Base.unsafe_wrap(OffsetArray, pointer::Ptr{T}, inds::Tuple; own=false, kw...)
637
+
638
+ Construct an `OffsetArray` around a pointer with axes defined by `inds` which may be Integers or AbstractUnitRanges.
639
+ If the keyword `own` is true, then Julia will free the pointer when the array is garbage collected.
640
+ Other keywords are forwarded to the `OffsetArray` constructor.
641
+ """
642
+ @inline function Base. unsafe_wrap (:: OffsetArrayUnion{T,N} , pointer:: Ptr{T} , inds:: NTuple{N, OffsetAxisKnownLength} ; kw... ) where {T,N}
643
+ _unsafe_wrap (pointer, inds; kw... )
644
+ end
645
+ # Avoid ambiguity
646
+ @inline function Base. unsafe_wrap (:: OffsetArrayUnion{T,N} , pointer:: Ptr{T} , inds:: NTuple{N, <:Integer} ; kw... ) where {T,N}
647
+ _unsafe_wrap (pointer, inds; kw... )
648
+ end
649
+ @inline function Base. unsafe_wrap (:: OffsetArrayUnion{T,N} , pointer:: Ptr{T} , inds:: Vararg{OffsetAxisKnownLength,N} ; kw... ) where {T,N}
650
+ _unsafe_wrap (pointer, inds; kw... )
651
+ end
652
+ # Avoid ambiguity
653
+ @inline function Base. unsafe_wrap (:: OffsetArrayUnion{T,N} , pointer:: Ptr{T} , inds:: Vararg{<:Integer,N} ; kw... ) where {T,N}
654
+ _unsafe_wrap (pointer, inds; kw... )
655
+ end
656
+
626
657
"""
627
658
no_offset_view(A)
628
659
0 commit comments