(r io.ReaderAt, hdr Header)
| 40 | } |
| 41 | |
| 42 | func NewObjectFromHeader(r io.ReaderAt, hdr Header) (*Object, error) { |
| 43 | cctx := NewContext() |
| 44 | if err := cctx.readMeta(io.NewSectionReader(r, HeaderSize, int64(hdr.MetaSize))); err != nil { |
| 45 | return nil, err |
| 46 | } |
| 47 | if hdr.Root >= uint32(len(cctx.values)) { |
| 48 | return nil, fmt.Errorf("CSUP root ID %d larger than values table (len %d)", hdr.Root, len(cctx.values)) |
| 49 | } |
| 50 | cctx.subtypesReader = io.NewSectionReader(r, int64(HeaderSize+hdr.MetaSize), int64(hdr.TypeSize)) |
| 51 | return &Object{ |
| 52 | cctx: cctx, |
| 53 | readerAt: io.NewSectionReader(r, int64(HeaderSize+hdr.MetaSize+hdr.TypeSize), int64(hdr.DataSize)), |
| 54 | header: hdr, |
| 55 | }, nil |
| 56 | } |
| 57 | |
| 58 | func (o *Object) Close() error { |
| 59 | if closer, ok := o.readerAt.(io.Closer); ok { |
no test coverage detected