Update dataObject.go

This commit is contained in:
Alexei Anoshenko 2026-10-19 18:26:44 +03:00
parent 5cb93b8142
commit 0f409d37cf
1 changed files with 33 additions and 13 deletions

View File

@ -418,9 +418,15 @@ func copyToReflectSlice(array DataArray, value reflect.Value) {
case reflect.Uint32: case reflect.Uint32:
for text := range array.TextElements() { for text := range array.TextElements() {
if n, err := strconv.ParseUint(text, 10, 32); err == nil { if len(text) > 0 {
if text[0] == '#' {
if n, err := strconv.ParseUint(text[1:], 16, 32); err == nil {
val = reflect.Append(val, reflect.ValueOf(uint32(n))) val = reflect.Append(val, reflect.ValueOf(uint32(n)))
} }
} else if n, err := strconv.ParseUint(text, 10, 32); err == nil {
val = reflect.Append(val, reflect.ValueOf(uint32(n)))
}
}
} }
case reflect.Uint64: case reflect.Uint64:
@ -534,10 +540,10 @@ func copyToReflectArray(array DataArray, val reflect.Value) {
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
for text := range array.TextElements() { for text := range array.TextElements() {
if n, err := strconv.ParseInt(text, 10, 64); err == nil {
if i >= maxSize { if i >= maxSize {
break break
} }
if n, err := strconv.ParseInt(text, 10, 64); err == nil {
value := val.Index(i) value := val.Index(i)
value.SetInt(n) value.SetInt(n)
i++ i++
@ -546,14 +552,22 @@ func copyToReflectArray(array DataArray, val reflect.Value) {
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
for text := range array.TextElements() { for text := range array.TextElements() {
if n, err := strconv.ParseUint(text, 10, 64); err == nil {
if i >= maxSize { if i >= maxSize {
break break
} }
if len(text) > 0 {
if text[0] == '#' {
if n, err := strconv.ParseUint(text[1:], 16, 64); err == nil {
value := val.Index(i) value := val.Index(i)
value.SetUint(n) value.SetUint(n)
i++ i++
} }
} else if n, err := strconv.ParseUint(text, 10, 64); err == nil {
value := val.Index(i)
value.SetUint(n)
i++
}
}
} }
case reflect.Float32, reflect.Float64: case reflect.Float32, reflect.Float64:
@ -718,9 +732,15 @@ func copyToReflectValue(data DataValue, value reflect.Value) {
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
if data.Type() == TextDataValue { if data.Type() == TextDataValue {
if n, err := strconv.ParseUint(data.String(), 10, 64); err == nil { if text := data.String(); len(text) > 0 {
if text[0] == '#' {
if n, err := strconv.ParseUint(text[1:], 16, 64); err == nil {
value.SetUint(n) value.SetUint(n)
} }
} else if n, err := strconv.ParseUint(text, 10, 64); err == nil {
value.SetUint(n)
}
}
} }
case reflect.Float32, reflect.Float64: case reflect.Float32, reflect.Float64: