(b *buffer)
| 239 | } |
| 240 | |
| 241 | func (d *Decoder) decode(b *buffer) error { |
| 242 | for b.length() > 0 { |
| 243 | code, err := b.ReadByte() |
| 244 | if err != nil { |
| 245 | return err |
| 246 | } |
| 247 | switch code { |
| 248 | case TypeDefRecord: |
| 249 | err = d.readTypeRecord(b) |
| 250 | case TypeDefSet: |
| 251 | err = d.readTypeSet(b) |
| 252 | case TypeDefArray: |
| 253 | err = d.readTypeArray(b) |
| 254 | case TypeDefMap: |
| 255 | err = d.readTypeMap(b) |
| 256 | case TypeDefUnion: |
| 257 | err = d.readTypeUnion(b) |
| 258 | case TypeDefEnum: |
| 259 | err = d.readTypeEnum(b) |
| 260 | case TypeDefName: |
| 261 | err = d.readTypeName(b) |
| 262 | case TypeDefError: |
| 263 | err = d.readTypeError(b) |
| 264 | case TypeDefFusion: |
| 265 | err = d.readTypeFusion(b) |
| 266 | default: |
| 267 | return fmt.Errorf("unknown BSUP typedef code: %d", code) |
| 268 | } |
| 269 | if err != nil { |
| 270 | return err |
| 271 | } |
| 272 | } |
| 273 | return nil |
| 274 | } |
| 275 | |
| 276 | func (d *Decoder) readTypeRecord(b *buffer) error { |
| 277 | nfields, err := readUvarintAsInt(b) |
no test coverage detected