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"}}