def AmlValue.element

bend-osdev-acpi@0.1.1.0 · aml_interp.bend:462

import bend-osdev-acpi@0.1.1.0/aml_interp.bend as AmlInterp
import Base
import bend-osdev-bytes@0.1.1.0/bytes.bend as B
import bend-osdev-acpi@0.1.1.0/error.bend as E
import bend-osdev-acpi@0.1.1.0/aml_value.bend as V

462# element i of a package, buffer or string
463def AmlValue.element(v: V.AmlValue, +i: Nat) -> Result<&2, &2, E.AcpiError, V.AmlValue>:
464  match v:
465    case V.AmlPkg{xs}:
466      in.nth(xs, i)
467    case V.AmlBuf{b}:
468      in.byte.at(B.Octets.at(b, i))
469    case V.AmlStr{s}:
470      in.byte.at(B.Octets.at(s, i))
471    case _:
472      Fail{E.AcpiAmlBadType{"Index of a value that is not a package, buffer or string"}}

Uses (7)

Used by (2)