in ubjson/parse.go [245:290]
func (p *Parser) execStep(b []byte) ([]byte, bool, error) {
var (
err error
done bool
)
switch p.state.current.stateType {
case stFail:
return b, false, p.err
case stNext:
b, done, err = p.stepValue(b)
case stFixed:
b, done, err = p.stepFixedValue(b)
case stHighPrec:
b, done, err = p.stepString(b)
case stString:
b, done, err = p.stepString(b)
case stArray:
b, err = p.stepArrayInit(b)
case stArrayDyn:
b, done, err = p.stepArrayDyn(b)
case stArrayCount:
b, done, err = p.stepArrayCount(b)
case stArrayTyped:
b, done, err = p.stepArrayTyped(b)
case stObject:
b, err = p.stepObjectInit(b)
case stObjectDyn:
b, done, err = p.stepObjectDyn(b)
case stObjectCount:
b, done, err = p.stepObjectCount(b)
case stObjectTyped:
b, done, err = p.stepObjectTyped(b)
default:
err = errInvalidState
}
if err != nil {
p.err = err
}
return b, done, err
}