diff options
author | Russ Cox <rsc@golang.org> | 2010-06-20 12:16:25 -0700 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2010-06-20 12:16:25 -0700 |
commit | be1fb301f118bbbf0cc9564f72392390425b5c67 (patch) | |
tree | 6858bcb73f10fcafb2b153875c318462b35a6c53 /src/pkg/json | |
parent | 91b42e59afb95e7ff63ec1bee1c2a322b6848d66 (diff) | |
download | golang-be1fb301f118bbbf0cc9564f72392390425b5c67.tar.gz |
reflect: add Kind, remove Int8Type, Int8Value, etc.
update other code to match.
R=r
CC=golang-dev
http://codereview.appspot.com/1680044
Diffstat (limited to 'src/pkg/json')
-rw-r--r-- | src/pkg/json/decode.go | 85 | ||||
-rw-r--r-- | src/pkg/json/encode.go | 24 |
2 files changed, 5 insertions, 104 deletions
diff --git a/src/pkg/json/decode.go b/src/pkg/json/decode.go index 9295bd2dc..6f768d4b8 100644 --- a/src/pkg/json/decode.go +++ b/src/pkg/json/decode.go @@ -572,101 +572,24 @@ func (d *decodeState) literal(v reflect.Value) { v.Set(reflect.NewValue(n)) case *reflect.IntValue: - n, err := strconv.Atoi(s) - if err != nil { - d.saveError(&UnmarshalTypeError{"number " + s, v.Type()}) - break - } - v.Set(n) - case *reflect.Int8Value: - n, err := strconv.Atoi(s) - if err != nil || int(int8(n)) != n { - d.saveError(&UnmarshalTypeError{"number " + s, v.Type()}) - break - } - v.Set(int8(n)) - case *reflect.Int16Value: - n, err := strconv.Atoi(s) - if err != nil || int(int16(n)) != n { - d.saveError(&UnmarshalTypeError{"number " + s, v.Type()}) - break - } - v.Set(int16(n)) - case *reflect.Int32Value: - n, err := strconv.Atoi(s) - if err != nil || int(int32(n)) != n { - d.saveError(&UnmarshalTypeError{"number " + s, v.Type()}) - break - } - v.Set(int32(n)) - case *reflect.Int64Value: n, err := strconv.Atoi64(s) - if err != nil { + if err != nil || v.Overflow(n) { d.saveError(&UnmarshalTypeError{"number " + s, v.Type()}) break } v.Set(n) case *reflect.UintValue: - n, err := strconv.Atoui(s) - if err != nil { - d.saveError(&UnmarshalTypeError{"number " + s, v.Type()}) - break - } - v.Set(n) - case *reflect.Uint8Value: - n, err := strconv.Atoui(s) - if err != nil || uint(uint8(n)) != n { - d.saveError(&UnmarshalTypeError{"number " + s, v.Type()}) - break - } - v.Set(uint8(n)) - case *reflect.Uint16Value: - n, err := strconv.Atoui(s) - if err != nil || uint(uint16(n)) != n { - d.saveError(&UnmarshalTypeError{"number " + s, v.Type()}) - break - } - v.Set(uint16(n)) - case *reflect.Uint32Value: - n, err := strconv.Atoui(s) - if err != nil || uint(uint32(n)) != n { - d.saveError(&UnmarshalTypeError{"number " + s, v.Type()}) - break - } - v.Set(uint32(n)) - case *reflect.Uint64Value: n, err := strconv.Atoui64(s) - if err != nil { + if err != nil || v.Overflow(n) { d.saveError(&UnmarshalTypeError{"number " + s, v.Type()}) break } v.Set(n) - case *reflect.UintptrValue: - n, err := strconv.Atoui64(s) - if err != nil || uint64(uintptr(n)) != n { - d.saveError(&UnmarshalTypeError{"number " + s, v.Type()}) - break - } - v.Set(uintptr(n)) case *reflect.FloatValue: - n, err := strconv.Atof(s) - if err != nil { - d.saveError(&UnmarshalTypeError{"number " + s, v.Type()}) - break - } - v.Set(n) - case *reflect.Float32Value: - n, err := strconv.Atof32(s) - if err != nil { - d.saveError(&UnmarshalTypeError{"number " + s, v.Type()}) - break - } - v.Set(n) - case *reflect.Float64Value: - n, err := strconv.Atof64(s) - if err != nil { + n, err := strconv.AtofN(s, int(v.Type().Size()*8)) + if err != nil || v.Overflow(n) { d.saveError(&UnmarshalTypeError{"number " + s, v.Type()}) break } diff --git a/src/pkg/json/encode.go b/src/pkg/json/encode.go index 839657c36..8b0f78488 100644 --- a/src/pkg/json/encode.go +++ b/src/pkg/json/encode.go @@ -156,35 +156,13 @@ func (e *encodeState) reflectValue(v reflect.Value) { } case *reflect.IntValue: - e.WriteString(strconv.Itoa(v.Get())) - case *reflect.Int8Value: - e.WriteString(strconv.Itoa(int(v.Get()))) - case *reflect.Int16Value: - e.WriteString(strconv.Itoa(int(v.Get()))) - case *reflect.Int32Value: - e.WriteString(strconv.Itoa(int(v.Get()))) - case *reflect.Int64Value: e.WriteString(strconv.Itoa64(v.Get())) case *reflect.UintValue: - e.WriteString(strconv.Uitoa(v.Get())) - case *reflect.Uint8Value: - e.WriteString(strconv.Uitoa(uint(v.Get()))) - case *reflect.Uint16Value: - e.WriteString(strconv.Uitoa(uint(v.Get()))) - case *reflect.Uint32Value: - e.WriteString(strconv.Uitoa(uint(v.Get()))) - case *reflect.Uint64Value: e.WriteString(strconv.Uitoa64(v.Get())) - case *reflect.UintptrValue: - e.WriteString(strconv.Uitoa64(uint64(v.Get()))) case *reflect.FloatValue: - e.WriteString(strconv.Ftoa(v.Get(), 'g', -1)) - case *reflect.Float32Value: - e.WriteString(strconv.Ftoa32(v.Get(), 'g', -1)) - case *reflect.Float64Value: - e.WriteString(strconv.Ftoa64(v.Get(), 'g', -1)) + e.WriteString(strconv.FtoaN(v.Get(), 'g', -1, int(v.Type().Size()*8))) case *reflect.StringValue: e.string(v.Get()) |