(r Reader, f func(Reader, Field) error)
| 582 | } |
| 583 | |
| 584 | func readStruct(r Reader, f func(Reader, Field) error) error { |
| 585 | lastFieldID := int16(0) |
| 586 | numFields := 0 |
| 587 | |
| 588 | for { |
| 589 | x, err := r.ReadField() |
| 590 | if err != nil { |
| 591 | if numFields > 0 { |
| 592 | err = dontExpectEOF(err) |
| 593 | } |
| 594 | return err |
| 595 | } |
| 596 | |
| 597 | if x.Type == STOP { |
| 598 | return nil |
| 599 | } |
| 600 | |
| 601 | if x.Delta { |
| 602 | x.ID += lastFieldID |
| 603 | x.Delta = false |
| 604 | } |
| 605 | |
| 606 | if err := f(r, x); err != nil { |
| 607 | return with(dontExpectEOF(err), &decodeErrorField{cause: x}) |
| 608 | } |
| 609 | |
| 610 | lastFieldID = x.ID |
| 611 | numFields++ |
| 612 | } |
| 613 | } |
| 614 | |
| 615 | func skip(r Reader, t Type) error { |
| 616 | var err error |
no test coverage detected
searching dependent graphs…