DecodeData.expand: def of bendvy-ecs-core@0.1.0.3 Import: import bendvy-ecs-core@0.1.0.3/decode_data.bend as DecodeData Lines 144-171 of bendvy-ecs-core@0.1.0.3/decode_data.bend: https://jend.leeeet.dev/read.txt?path=bendvy-ecs-core@0.1.0.3/decode_data.bend&start_line=144&end_line=171 import Base import entity_key.bend as Key import bendvy-ecs-core@0.1.0.3/decode_utf16.bend as Utf16 def expand(codec:Codec,+raw:Raw,+path:String,rest:List<&2,Work>) -> Step: match codec raw: case Integer{} Number{_}: Continue{rest} case Integer{} SignedInteger{_,magnitude}: choose_checked(Nat.is_lt(Nat.div(magnitude,Nat.mul(65536n,65536n)),2097152n),path,"integer",raw,rest) case Integer{} Float{+value}: choose_checked(F32.is_eq(F32.floor(value),value) && F32.is_lt(F32.abs(value),9007199254740992.0),path,"integer",raw,rest) case Integer{} Binary64{high,low}: choose_checked(binary_integer(high,low),path,"integer",raw,rest) case FiniteNumber{} Number{_}: Continue{rest} case FiniteNumber{} SignedInteger{_,_}: Continue{rest} case FiniteNumber{} Float{value}: choose_checked(F32.is_le(F32.abs(value),3.4028234e38),path,"finite number",raw,rest) case FiniteNumber{} Binary64{high,_}: choose_checked(U32.is_lt(binary64_exponent(high),2047),path,"finite number",raw,rest) case StringValue{} BendvyText{_}: Continue{rest} case StringValue{} Utf16Text{units}: choose_checked(Utf16.valid(units),path,"string",raw,rest) case BoolValue{} Boolean{_}: Continue{rest} case Literal{value} _: choose_checked(equal(value,raw),path,"literal",raw,rest) case LiteralValues{values} _: choose_checked(alternatives(values,raw),path,"literal",raw,rest) case LiteralRendered{values,expected} _: choose_checked(alternatives(values,raw),path,expected,raw,rest) case Nullable{_} Null{}: Continue{rest} case Nullable{inner} _: Continue{Work{inner,raw,path} <> rest} case ArrayValue{inner} Array{items}: Continue{array_work(inner,items,path,0,rest)} case Struct{fields} Object{values}: Continue{struct_work(fields,values,path,rest)} case HandleValue{ns} Handle{actual,id}: choose_checked(U32.is_eq(ns,actual) && U32.is_gt(Key.index(id),0),path,"same-world handle",raw,rest) case Integer{} _: Stop{Invalid{path,"integer",raw}} case FiniteNumber{} _: Stop{Invalid{path,"finite number",raw}} case StringValue{} _: Stop{Invalid{path,"string",raw}} case BoolValue{} _: Stop{Invalid{path,"boolean",raw}} case ArrayValue{_} _: Stop{Invalid{path,"array",raw}} case Struct{_} _: Stop{Invalid{path,"object",raw}} case HandleValue{_} _: Stop{Invalid{path,"same-world handle",raw}} Uses (28): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool.and https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=F32.abs https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=F32.floor https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=F32.is_eq https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=F32.is_le https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=F32.is_lt https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=List https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat.div https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat.is_lt https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat.mul https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=String https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.is_eq https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.is_gt https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.is_lt https://jend.leeeet.dev/definition.txt?path=bendvy-ecs-core@0.1.0.3/decode_data.bend&name=Codec https://jend.leeeet.dev/definition.txt?path=bendvy-ecs-core@0.1.0.3/decode_data.bend&name=Error https://jend.leeeet.dev/definition.txt?path=bendvy-ecs-core@0.1.0.3/decode_data.bend&name=Raw https://jend.leeeet.dev/definition.txt?path=bendvy-ecs-core@0.1.0.3/decode_data.bend&name=Step https://jend.leeeet.dev/definition.txt?path=bendvy-ecs-core@0.1.0.3/decode_data.bend&name=Work https://jend.leeeet.dev/definition.txt?path=bendvy-ecs-core@0.1.0.3/decode_data.bend&name=alternatives https://jend.leeeet.dev/definition.txt?path=bendvy-ecs-core@0.1.0.3/decode_data.bend&name=array_work https://jend.leeeet.dev/definition.txt?path=bendvy-ecs-core@0.1.0.3/decode_data.bend&name=binary64_exponent https://jend.leeeet.dev/definition.txt?path=bendvy-ecs-core@0.1.0.3/decode_data.bend&name=binary_integer https://jend.leeeet.dev/definition.txt?path=bendvy-ecs-core@0.1.0.3/decode_data.bend&name=choose_checked https://jend.leeeet.dev/definition.txt?path=bendvy-ecs-core@0.1.0.3/decode_data.bend&name=equal https://jend.leeeet.dev/definition.txt?path=bendvy-ecs-core@0.1.0.3/decode_data.bend&name=struct_work https://jend.leeeet.dev/definition.txt?path=bendvy-ecs-core@0.1.0.3/decode_utf16.bend&name=valid https://jend.leeeet.dev/definition.txt?path=bendvy-ecs-core@0.1.0.3/entity_key.bend&name=index