in ubjson/parse.go [425:459]
func (p *Parser) stepArrayCount(b []byte) ([]byte, bool, error) {
var (
st = &p.state.current
step = st.stateStep
)
// parse array header
if step == stStart {
b, err := p.stepLen(b, st.withStep(stWithLen))
return b, false, err
}
l := int(p.length.current)
if step == stWithLen {
p.state.current.stateStep = stCont
err := p.visitor.OnArrayStart(l, structform.AnyType)
if err != nil {
return b, false, err
}
}
if l == 0 {
err := p.visitor.OnArrayFinished()
done := true
if err == nil {
done, err = p.popLenState()
}
return b, done, err
}
p.length.current--
b, _, err := p.stepValue(b)
return b, false, err
}