func()

in cborl/parse.go [427:465]


func (p *Parser) stepBytes(b []byte) ([]byte, bool, error) {
	// stream raw bytes via array visitor

	var (
		st  = &p.state.current
		err error
	)

	if st.minor == stStart {
		err = p.visitor.OnArrayStart(int(p.length.current), structform.ByteType)
		if err != nil {
			return nil, false, err
		}
		st.minor = stCont
	}

	L := int(p.length.current)
	done := len(b) >= L
	if !done {
		L = len(b)
		p.length.current -= int64(L)
	}

	for _, c := range b[:L] {
		if err := p.visitor.OnByte(c); err != nil {
			return nil, false, err
		}
	}

	b = b[L:]
	if done {
		err = p.visitor.OnArrayFinished()
		p.length.pop()
		if err == nil {
			done, err = p.popState()
		}
	}
	return b, done, err
}