|
|
|
@ -46,9 +46,16 @@ func EncodeAny(encoder *Encoder, value any, tag Tag) (n int, err error) {
|
|
|
|
case reflect.Uint32: return encoder.WriteUint32(uint32(reflectValue.Uint()))
|
|
|
|
case reflect.Uint32: return encoder.WriteUint32(uint32(reflectValue.Uint()))
|
|
|
|
case reflect.Int64: return encoder.WriteInt64(int64(reflectValue.Int()))
|
|
|
|
case reflect.Int64: return encoder.WriteInt64(int64(reflectValue.Int()))
|
|
|
|
case reflect.Uint64: return encoder.WriteUint64(uint64(reflectValue.Uint()))
|
|
|
|
case reflect.Uint64: return encoder.WriteUint64(uint64(reflectValue.Uint()))
|
|
|
|
case reflect.String: return EncodeAny(encoder, []byte(reflectValue.String()), tag)
|
|
|
|
case reflect.String:
|
|
|
|
|
|
|
|
if reflectValue.Len() > MaxStructureLength {
|
|
|
|
|
|
|
|
return 0, ErrTooLong
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return EncodeAny(encoder, []byte(reflectValue.String()), tag)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if reflectValue.CanConvert(reflect.TypeOf(dummyBuffer)) {
|
|
|
|
if reflectValue.CanConvert(reflect.TypeOf(dummyBuffer)) {
|
|
|
|
|
|
|
|
if reflectValue.Len() > MaxStructureLength {
|
|
|
|
|
|
|
|
return 0, ErrTooLong
|
|
|
|
|
|
|
|
}
|
|
|
|
if tag.Is(LBA) {
|
|
|
|
if tag.Is(LBA) {
|
|
|
|
nn, err := encoder.WriteUintN(uint64(reflectValue.Len()), tag.CN() + 1)
|
|
|
|
nn, err := encoder.WriteUintN(uint64(reflectValue.Len()), tag.CN() + 1)
|
|
|
|
n += nn; if err != nil { return n, err }
|
|
|
|
n += nn; if err != nil { return n, err }
|
|
|