def fld.bits.set

bend-osdev-acpi@0.1.1.0 · aml_field.bend:305

import bend-osdev-acpi@0.1.1.0/aml_field.bend as AmlField
import Base
import bend-osdev-word64@0.1.1.0/word64.bend as W
import bend-osdev-bytes@0.1.1.0/bytes.bend as B

305def fld.bits.set(n: Nat, xs: List<&2, U32>, +i: Nat, +k: Nat, +v: W.W64) -> List<&2, U32>:
306  match n:
307    case 0n:
308      xs
309    case 1n+p:
310      +ys = xs
311      +j = Nat.div(i, 8n)
312      +bit = U32.shln(1, Nat.mod(i, 8n))
313      +old = Maybe.default(&2, U32, B.at(ys, j), 0)
314      +on = W.W64.is_eq(W.W64.and(W.W64.shr(v, k), W.W64.one()), W.W64.one())
315      fld.bits.set(p, List.set(&2, U32, ys, j, fld.bits.one(on, old, bit)), Nat.add(i, 1n), Nat.add(k, 1n), v)

Uses (16)

Used by (1)