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
}