@@ -177,6 +177,9 @@ if VERSION < v"1.8.2"
177
177
end
178
178
@inline Base. unsafe_indices (r:: IdOffsetRange ) = (axes1 (r),)
179
179
@inline Base. length (r:: IdOffsetRange ) = length (r. parent)
180
+ if VERSION >= v " 1.7"
181
+ @inline Base. checked_length (x:: IdOffsetRange ) = Base. checked_length (x. parent)
182
+ end
180
183
@inline Base. isempty (r:: IdOffsetRange ) = isempty (r. parent)
181
184
#= We specialize on reduced_indices to work around cases where the parent axis type doesn't
182
185
support reduced_index, but the axes do support reduced_indices
@@ -275,7 +278,11 @@ Broadcast.broadcasted(::Base.Broadcast.DefaultArrayStyle{1}, ::typeof(+), x::Int
275
278
Broadcast. broadcasted (:: Base.Broadcast.DefaultArrayStyle{1} , :: typeof (big), r:: IdOffsetRange ) =
276
279
IdOffsetRange (big .(r. parent), r. offset)
277
280
278
- Base. show (io:: IO , r:: IdOffsetRange ) = print (io, IdOffsetRange, " (values=" ,first (r), ' :' , last (r)," , indices=" ,first (eachindex (r)),' :' ,last (eachindex (r)), " )" )
281
+ function Base. show (io:: IO , r:: IdOffsetRange )
282
+ values_offset = r. parent .+ r. offset
283
+ indices_offset = axes (r. parent,1 ) .+ r. offset
284
+ print (io, IdOffsetRange, " (values=" ,values_offset," , indices=" ,indices_offset," )" )
285
+ end
279
286
280
287
# Optimizations
281
288
@inline Base. checkindex (:: Type{Bool} , inds:: IdOffsetRange , i:: Real ) = Base. checkindex (Bool, inds. parent, i - inds. offset)
@@ -287,6 +294,8 @@ if VERSION < v"1.5.2"
287
294
Base. compute_linindex (parent, I) - stride1* first (Base. axes1 (inds[1 ]))
288
295
end
289
296
297
+ Base. IteratorSize (:: Type{<:IdOffsetRange{<:Any,I}} ) where {I} = Base. IteratorSize (I)
298
+
290
299
# This was deemed "too private" to extend: see issue #184
291
300
# # Fixes an inference failure in Base.mapfirst!
292
301
# # Test: A = OffsetArray(rand(4,4), (-3,5)); R = similar(A, (1:1, 6:9)); maximum!(R, A)
0 commit comments