def fl.loop

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

import bend-osdev-acpi@0.1.1.0/aml_interp.bend as AmlInterp
import Base
import bend-osdev-acpi@0.1.1.0/error.bend as E

2450# every element takes at least two bytes, so the list length is enough fuel
2451def fl.loop(-H: Data, fuel: Nat, +k: AmlFk, r: Result<&2, &2, E.AcpiError, AmlFlNext<H>>) -> Result<&2, &2, E.AcpiError, AmlWorld<H>>:
2452  match fuel:
2453    case 0n:
2454      match r:
2455        case Fail{e}:
2456          Fail{e}
2457        case Done{AmlFlEnd{w}}:
2458          Done{w}
2459        case Done{AmlFlMore{st}}:
2460          Fail{E.AcpiAmlTruncated{}}
2461    case 1n+p:
2462      match r:
2463        case Fail{e}:
2464          Fail{e}
2465        case Done{AmlFlEnd{w}}:
2466          Done{w}
2467        case Done{AmlFlMore{st}}:
2468          fl.loop(H, p, k, fl.step(H, k, st))

Uses (7)

Used by (1)