diff --git a/tape/dynamic.go b/tape/dynamic.go index 6cd9faf..7e7333b 100644 --- a/tape/dynamic.go +++ b/tape/dynamic.go @@ -157,7 +157,7 @@ func decodeAny(decoder *Decoder, destination reflect.Value, tag Tag) (n int, err n += nn; if err != nil { return n, err } itemTag, nn, err := decoder.ReadTag() n += nn; if err != nil { return n, err } - value, err := skeletonValue(itemTag) + value, err := skeletonValue(decoder, itemTag) if err != nil { return n, err } nn, err = decodeAny(decoder, value.Elem(), itemTag) n += nn; if err != nil { return n, err } @@ -304,7 +304,7 @@ func decodeAndSetFloat(decoder *Decoder, destination reflect.Value, bytes int) ( // skeletonValue returns a pointer value. In order for it to be set, it must be // dereferenced using Elem(). -func skeletonValue(tag Tag) (reflect.Value, error) { +func skeletonValue(decoder *Decoder, tag Tag) (reflect.Value, error) { switch tag.WithoutCN() { case SI: value := uint8(0) @@ -325,12 +325,20 @@ func skeletonValue(tag Tag) (reflect.Value, error) { return reflect.Value { }, fmt.Errorf("unknown CN %d for FP", tag.CN()) case SBA: value := []byte { }; return reflect.ValueOf(&value), nil case LBA: value := []byte { }; return reflect.ValueOf(&value), nil - case OTA: value := unknownSlicePlaceholder { }; return reflect.ValueOf(&value), nil + case OTA: return skeletonValueSlice(decoder, tag) case KTV: value := map[uint16] any { }; return reflect.ValueOf(&value), nil } return reflect.Value { }, fmt.Errorf("unknown TN %d", tag.TN()) } +// skeletonValueSlice returns a pointer value. In order for it to be set, it +// must be dereferenced using Elem(). +func skeletonValueSlice(decoder *Decoder, tag Tag) (reflect.Value, error) { + // TODO +} + +// TODO: delete fucntion below + // skeletonValueSlice returns a pointer value. In order for it to be set, it // must be dereferenced using Elem(). func skeletonValueSlice(tag Tag, length int) (reflect.Value, error) {