package grenier
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
A collection of various algorithms in OCaml
Install
dune-project
Dependency
Authors
Maintainers
Sources
grenier-0.14.tbz
sha256=e5362e6ad0e888526517415e78b9e8243bb0cc1b0c952201884148832ac4442f
sha512=4e2f16b52b3c2786a1b8e93156184fd69d448cea571ca839b6cb88ab73f380994d1561fe24c1523c43ed8fc42d2ac01b673a13b6151fff4af4f009923d3aaf37
doc/src/grenier.orderme/order_managed_indir.ml.html
Source file order_managed_indir.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71open Order_indir type order = t type t = { t : order; (* This strange dance with protect is to prevent the GC from collecting values in the middle of an operation. *) lock : gc_lock; } and gc_lock = { mutable locks: int; mutable forgotten: order list; } let lock lock = lock.locks <- lock.locks + 1 let unlock lock = lock.locks <- lock.locks - 1; if lock.locks = 0 then match lock.forgotten with | [] -> () | forgotten -> lock.forgotten <- []; List.iter forget forgotten let forget {lock; t} = if lock.locks > 0 then lock.forgotten <- t :: lock.forgotten else forget t let is_valid t = lock t.lock; let result = is_valid t.t in unlock t.lock; result let root () = let t = {t = root (); lock = { locks = 0; forgotten = [] }} in Gc.finalise forget t; t let after t = lock t.lock; let t' = {t = after t.t; lock = t.lock} in Gc.finalise forget t'; unlock t.lock; t' let before t = lock t.lock; let t' = {t = before t.t; lock = t.lock} in Gc.finalise forget t'; unlock t.lock; t' let same_order t1 t2 = same_order t1.t t2.t let compare t1 t2 = compare t1.t t2.t let cardinal t = cardinal t.t let unsafe_check t msg = lock t.lock; unsafe_check t.t ("(Order_managed) " ^ msg); unlock t.lock
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>