def ent.go
bend-osdev-acpi@0.1.1.0 · entries.bend:58
import bend-osdev-acpi@0.1.1.0/entries.bend as Entries
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
58
59def ent.go(fuel: Nat, nx: AcpiEntNext, +o: B.Octets, +off: Nat, acc: List<&2, AcpiRawEntry>) -> Result<&2, &2, E.AcpiError, List<&2, AcpiRawEntry>>:
60 match fuel:
61 case 0n:
62 Done{ent.rev(acc, Nil{})}
63 case 1n+p:
64 match nx:
65 case AcpiEntEnd{}:
66 Done{ent.rev(acc, Nil{})}
67 case AcpiEntBad{k}:
68 Fail{E.AcpiBadEntry{off, k}}
69 case AcpiEntOk{k, +l}:
70 +rest = B.Octets.drop(l, o)
71 ent.go(p, ent.next(rest), rest, Nat.add(off, l), Con{AcpiRawEntry{k, off, B.Octets.take(l, o)}, acc})