def AmlT.encode
bend-osdev-acpi@0.1.1.0 · aml_term.bend:83
import bend-osdev-acpi@0.1.1.0/aml_term.bend as AmlTerm
import Base
import bend-osdev-bytes@0.1.1.0/bytes.bend as B
import bend-osdev-acpi@0.1.1.0/aml_pkglength.bend as K
83
84
85def AmlT.encode(ts: List<&2, AmlTerm>) -> B.Octets:
86 match ts:
87 case Nil{}:
88 B.Octets.empty()
89 case Con{t, rest}:
90 match t:
91 case AmlTInt{v}:
92 B.Octets.append(tm.int(v), AmlT.encode(rest))
93 case AmlTStr{s}:
94 B.Octets.append(tm.str(s), AmlT.encode(rest))
95 case AmlTRaw{bs}:
96 B.Octets.append(bs, AmlT.encode(rest))
97 case AmlTOp{c, args}:
98 B.Octets.concat([c, AmlT.encode(args), AmlT.encode(rest)])
99 case AmlTPkg{c, h, body}:
100 B.Octets.concat([c, K.AmlPkgLength.wrap(B.Octets.append(h, AmlT.encode(body))), AmlT.encode(rest)])