func()

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
}