def AmlValue.to_int

bend-osdev-acpi@0.1.1.0 · aml_value.bend:180

import bend-osdev-acpi@0.1.1.0/aml_value.bend as AmlValue
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
import bend-osdev-acpi@0.1.1.0/error.bend as E

180def AmlValue.to_int(+wide: Bool, v: AmlValue) -> Result<&2, &2, E.AcpiError, W.W64>:
181  match v:
182    case AmlInt{x}:
183      Done{AmlInt.fit(wide, x)}
184    case AmlBuf{b}:
185      Done{val.le.go(AmlInt.width_bytes(wide), B.Octets.to_list(b), 0n, W.W64.zero())}
186    case AmlStr{s}:
187      Done{val.hex.parse(wide, B.Octets.to_list(s))}
188    case AmlUninit{}:
189      Fail{E.AcpiAmlBadType{"uninitialized value used as an integer"}}
190    case AmlPkg{xs}:
191      Fail{E.AcpiAmlBadType{"package used as an integer"}}
192    case AmlRef{l}:
193      Fail{E.AcpiAmlBadType{"reference used as an integer"}}
194    case AmlObj{p, k}:
195      Fail{E.AcpiAmlBadType{"object used as an integer"}}

Uses (11)

Used by (18)