decode.bend
bendvy-ecs-core@0.1.0.3 · 14 lines · 3 definitions
1import Base
2import bendvy-ecs-core@0.1.0.3/decode_data.bend as D
3import bendvy-ecs-core@0.1.0.3/decode_size.bend as Size
4
5
6
7
8def decode_budget(~Owner:Type,+codec:D.Codec,raw:D.Raw,+fuel:Nat,owner:Owner) -> D.Receipt<Owner>:
9 D.normalized(~Owner,fuel,codec,D.owned(~Owner,fuel,codec,D.Owned{owner,raw}))
10def decode_projected(~Owner:Type,+codec:D.Codec,observed:Owner & D.Raw) -> D.Receipt<Owner>:
11 match observed:
12 case (owner,+raw): decode_budget(~Owner,codec,raw,Size.budget(codec,raw),owner)
13def decode_owner(~Owner:Type,~project:Owner -> Owner & D.Raw,codec:D.Codec,owner:Owner) -> D.Receipt<Owner>:
14 decode_projected(~Owner,codec,project(owner))