@@ -449,6 +449,33 @@ function delete!(h::OrderedDict, key)
449
449
return h
450
450
end
451
451
452
+ function deleteat! (od:: OrderedDict , i:: Integer , rehash= true )
453
+ key = od. keys[i]
454
+ index = OrderedCollections. ht_keyindex (od, key, false )
455
+ @inbounds ki = od. slots[index]
456
+ @inbounds od. slots[index] = - ki
457
+ ccall (:jl_arrayunset , Cvoid, (Any, UInt), od. keys, ki- 1 )
458
+ ccall (:jl_arrayunset , Cvoid, (Any, UInt), od. vals, ki- 1 )
459
+ od. ndel += 1
460
+ od. dirty = true
461
+ rehash && OrderedCollections. rehash! (od)
462
+ end
463
+
464
+ function deleteat! (od:: OrderedDict ,
465
+ inds:: Union{AbstractUnitRange{<:Integer}, AbstractVector{<:Integer}} )
466
+ for i in inds
467
+ deleteat! (od, i, false )
468
+ end
469
+ OrderedCollections. rehash! (od)
470
+ end
471
+
472
+ function deleteat! (od:: OrderedDict , inds:: AbstractVector{<:Bool} )
473
+ for (i,b) in enumerate (inds)
474
+ b && deleteat! (od, i, false )
475
+ end
476
+ OrderedCollections. rehash! (od)
477
+ end
478
+
452
479
function iterate (t:: OrderedDict )
453
480
t. ndel > 0 && rehash! (t)
454
481
length (t. keys) < 1 && return nothing
0 commit comments