def bytes.tree.get

gralha-bytes@0.1.0.1 · bytes.bend:33

import gralha-bytes@0.1.0.1/bytes.bend as Bytes
import Base
import gralha-text-scan@0.1.0.1/scan.bend as U

33def bytes.tree.get(bufTree: ByteTree, +capacity: U32, +index: U32) -> U32:
34  match bufTree:
35    case ByteFlat{v}: v
36    case ByteWord{v}: bytes.word.get(v, index)
37    case ByteNode{left, right}:
38      +half = (capacity / 2 : U32)
39      bytes.tree.get(U.choose(ByteTree, U32.is_lt(index, half), left, right), half, U32.mod(index, half))
40
41@unsafe

Uses (7)

Used by (1)