Commit 4c006182 authored by Russ Cox's avatar Russ Cox

pkg: manual cleanup of some gofixed code

R=golang-dev, niemeyer, r
CC=golang-dev
https://golang.org/cl/4372052
parent 017e73c1
...@@ -467,7 +467,6 @@ func parseField(v reflect.Value, bytes []byte, initOffset int, params fieldParam ...@@ -467,7 +467,6 @@ func parseField(v reflect.Value, bytes []byte, initOffset int, params fieldParam
// Deal with the ANY type. // Deal with the ANY type.
if ifaceType := fieldType; ifaceType.Kind() == reflect.Interface && ifaceType.NumMethod() == 0 { if ifaceType := fieldType; ifaceType.Kind() == reflect.Interface && ifaceType.NumMethod() == 0 {
ifaceValue := v
var t tagAndLength var t tagAndLength
t, offset, err = parseTagAndLength(bytes, offset) t, offset, err = parseTagAndLength(bytes, offset)
if err != nil { if err != nil {
...@@ -506,7 +505,7 @@ func parseField(v reflect.Value, bytes []byte, initOffset int, params fieldParam ...@@ -506,7 +505,7 @@ func parseField(v reflect.Value, bytes []byte, initOffset int, params fieldParam
return return
} }
if result != nil { if result != nil {
ifaceValue.Set(reflect.NewValue(result)) v.Set(reflect.NewValue(result))
} }
return return
} }
...@@ -536,9 +535,7 @@ func parseField(v reflect.Value, bytes []byte, initOffset int, params fieldParam ...@@ -536,9 +535,7 @@ func parseField(v reflect.Value, bytes []byte, initOffset int, params fieldParam
err = StructuralError{"Zero length explicit tag was not an asn1.Flag"} err = StructuralError{"Zero length explicit tag was not an asn1.Flag"}
return return
} }
v.SetBool(true)
flagValue := v
flagValue.SetBool(true)
return return
} }
} else { } else {
...@@ -606,23 +603,20 @@ func parseField(v reflect.Value, bytes []byte, initOffset int, params fieldParam ...@@ -606,23 +603,20 @@ func parseField(v reflect.Value, bytes []byte, initOffset int, params fieldParam
switch fieldType { switch fieldType {
case objectIdentifierType: case objectIdentifierType:
newSlice, err1 := parseObjectIdentifier(innerBytes) newSlice, err1 := parseObjectIdentifier(innerBytes)
sliceValue := v v.Set(reflect.MakeSlice(v.Type(), len(newSlice), len(newSlice)))
sliceValue.Set(reflect.MakeSlice(sliceValue.Type(), len(newSlice), len(newSlice)))
if err1 == nil { if err1 == nil {
reflect.Copy(sliceValue, reflect.NewValue(newSlice)) reflect.Copy(v, reflect.NewValue(newSlice))
} }
err = err1 err = err1
return return
case bitStringType: case bitStringType:
structValue := v
bs, err1 := parseBitString(innerBytes) bs, err1 := parseBitString(innerBytes)
if err1 == nil { if err1 == nil {
structValue.Set(reflect.NewValue(bs)) v.Set(reflect.NewValue(bs))
} }
err = err1 err = err1
return return
case timeType: case timeType:
ptrValue := v
var time *time.Time var time *time.Time
var err1 os.Error var err1 os.Error
if universalTag == tagUTCTime { if universalTag == tagUTCTime {
...@@ -631,21 +625,19 @@ func parseField(v reflect.Value, bytes []byte, initOffset int, params fieldParam ...@@ -631,21 +625,19 @@ func parseField(v reflect.Value, bytes []byte, initOffset int, params fieldParam
time, err1 = parseGeneralizedTime(innerBytes) time, err1 = parseGeneralizedTime(innerBytes)
} }
if err1 == nil { if err1 == nil {
ptrValue.Set(reflect.NewValue(time)) v.Set(reflect.NewValue(time))
} }
err = err1 err = err1
return return
case enumeratedType: case enumeratedType:
parsedInt, err1 := parseInt(innerBytes) parsedInt, err1 := parseInt(innerBytes)
enumValue := v
if err1 == nil { if err1 == nil {
enumValue.SetInt(int64(parsedInt)) v.SetInt(int64(parsedInt))
} }
err = err1 err = err1
return return
case flagType: case flagType:
flagValue := v v.SetBool(true)
flagValue.SetBool(true)
return return
} }
switch val := v; val.Kind() { switch val := v; val.Kind() {
......
...@@ -168,18 +168,18 @@ func Write(w io.Writer, order ByteOrder, data interface{}) os.Error { ...@@ -168,18 +168,18 @@ func Write(w io.Writer, order ByteOrder, data interface{}) os.Error {
} }
func TotalSize(v reflect.Value) int { func TotalSize(v reflect.Value) int {
if sv := v; sv.Kind() == reflect.Slice { if v.Kind() == reflect.Slice {
elem := sizeof(v.Type().Elem()) elem := sizeof(v.Type().Elem())
if elem < 0 { if elem < 0 {
return -1 return -1
} }
return sv.Len() * elem return v.Len() * elem
} }
return sizeof(v.Type()) return sizeof(v.Type())
} }
func sizeof(v reflect.Type) int { func sizeof(t reflect.Type) int {
switch t := v; t.Kind() { switch t.Kind() {
case reflect.Array: case reflect.Array:
n := sizeof(t.Elem()) n := sizeof(t.Elem())
if n < 0 { if n < 0 {
...@@ -198,12 +198,10 @@ func sizeof(v reflect.Type) int { ...@@ -198,12 +198,10 @@ func sizeof(v reflect.Type) int {
} }
return sum return sum
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr, reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Float32, reflect.Float64, reflect.Complex64, reflect.Complex128: case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64,
switch t := t.Kind(); t { reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64,
case reflect.Int, reflect.Uint, reflect.Uintptr: reflect.Float32, reflect.Float64, reflect.Complex64, reflect.Complex128:
return -1 return int(t.Size())
}
return int(v.Size())
} }
return -1 return -1
} }
...@@ -297,8 +295,6 @@ func (d *decoder) value(v reflect.Value) { ...@@ -297,8 +295,6 @@ func (d *decoder) value(v reflect.Value) {
d.value(v.Index(i)) d.value(v.Index(i))
} }
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
switch v.Type().Kind() {
case reflect.Int8: case reflect.Int8:
v.SetInt(int64(d.int8())) v.SetInt(int64(d.int8()))
case reflect.Int16: case reflect.Int16:
...@@ -307,10 +303,7 @@ func (d *decoder) value(v reflect.Value) { ...@@ -307,10 +303,7 @@ func (d *decoder) value(v reflect.Value) {
v.SetInt(int64(d.int32())) v.SetInt(int64(d.int32()))
case reflect.Int64: case reflect.Int64:
v.SetInt(d.int64()) v.SetInt(d.int64())
}
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
switch v.Type().Kind() {
case reflect.Uint8: case reflect.Uint8:
v.SetUint(uint64(d.uint8())) v.SetUint(uint64(d.uint8()))
case reflect.Uint16: case reflect.Uint16:
...@@ -319,18 +312,12 @@ func (d *decoder) value(v reflect.Value) { ...@@ -319,18 +312,12 @@ func (d *decoder) value(v reflect.Value) {
v.SetUint(uint64(d.uint32())) v.SetUint(uint64(d.uint32()))
case reflect.Uint64: case reflect.Uint64:
v.SetUint(d.uint64()) v.SetUint(d.uint64())
}
case reflect.Float32, reflect.Float64:
switch v.Type().Kind() {
case reflect.Float32: case reflect.Float32:
v.SetFloat(float64(math.Float32frombits(d.uint32()))) v.SetFloat(float64(math.Float32frombits(d.uint32())))
case reflect.Float64: case reflect.Float64:
v.SetFloat(math.Float64frombits(d.uint64())) v.SetFloat(math.Float64frombits(d.uint64()))
}
case reflect.Complex64, reflect.Complex128:
switch v.Type().Kind() {
case reflect.Complex64: case reflect.Complex64:
v.SetComplex(complex( v.SetComplex(complex(
float64(math.Float32frombits(d.uint32())), float64(math.Float32frombits(d.uint32())),
...@@ -342,7 +329,6 @@ func (d *decoder) value(v reflect.Value) { ...@@ -342,7 +329,6 @@ func (d *decoder) value(v reflect.Value) {
math.Float64frombits(d.uint64()), math.Float64frombits(d.uint64()),
)) ))
} }
}
} }
func (e *encoder) value(v reflect.Value) { func (e *encoder) value(v reflect.Value) {
......
...@@ -37,15 +37,12 @@ func TypeFromNative(t reflect.Type) Type { ...@@ -37,15 +37,12 @@ func TypeFromNative(t reflect.Type) Type {
switch t.Kind() { switch t.Kind() {
case reflect.Bool: case reflect.Bool:
et = BoolType et = BoolType
case reflect.Float32, reflect.Float64:
switch t.Kind() {
case reflect.Float32: case reflect.Float32:
et = Float32Type et = Float32Type
case reflect.Float64: case reflect.Float64:
et = Float64Type et = Float64Type
}
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
switch t.Kind() {
case reflect.Int16: case reflect.Int16:
et = Int16Type et = Int16Type
case reflect.Int32: case reflect.Int32:
...@@ -56,9 +53,7 @@ func TypeFromNative(t reflect.Type) Type { ...@@ -56,9 +53,7 @@ func TypeFromNative(t reflect.Type) Type {
et = Int8Type et = Int8Type
case reflect.Int: case reflect.Int:
et = IntType et = IntType
}
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
switch t.Kind() {
case reflect.Uint16: case reflect.Uint16:
et = Uint16Type et = Uint16Type
case reflect.Uint32: case reflect.Uint32:
...@@ -71,7 +66,7 @@ func TypeFromNative(t reflect.Type) Type { ...@@ -71,7 +66,7 @@ func TypeFromNative(t reflect.Type) Type {
et = UintType et = UintType
case reflect.Uintptr: case reflect.Uintptr:
et = UintptrType et = UintptrType
}
case reflect.String: case reflect.String:
et = StringType et = StringType
case reflect.Array: case reflect.Array:
......
...@@ -400,15 +400,11 @@ func packStructValue(val reflect.Value, msg []byte, off int) (off1 int, ok bool) ...@@ -400,15 +400,11 @@ func packStructValue(val reflect.Value, msg []byte, off int) (off1 int, ok bool)
return len(msg), false return len(msg), false
case reflect.Struct: case reflect.Struct:
off, ok = packStructValue(fv, msg, off) off, ok = packStructValue(fv, msg, off)
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
i := fv.Uint()
switch fv.Type().Kind() {
default:
goto BadType
case reflect.Uint16: case reflect.Uint16:
if off+2 > len(msg) { if off+2 > len(msg) {
return len(msg), false return len(msg), false
} }
i := fv.Uint()
msg[off] = byte(i >> 8) msg[off] = byte(i >> 8)
msg[off+1] = byte(i) msg[off+1] = byte(i)
off += 2 off += 2
...@@ -416,12 +412,12 @@ func packStructValue(val reflect.Value, msg []byte, off int) (off1 int, ok bool) ...@@ -416,12 +412,12 @@ func packStructValue(val reflect.Value, msg []byte, off int) (off1 int, ok bool)
if off+4 > len(msg) { if off+4 > len(msg) {
return len(msg), false return len(msg), false
} }
i := fv.Uint()
msg[off] = byte(i >> 24) msg[off] = byte(i >> 24)
msg[off+1] = byte(i >> 16) msg[off+1] = byte(i >> 16)
msg[off+2] = byte(i >> 8) msg[off+2] = byte(i >> 8)
msg[off+3] = byte(i) msg[off+3] = byte(i)
off += 4 off += 4
}
case reflect.Array: case reflect.Array:
if fv.Type().Elem().Kind() != reflect.Uint8 { if fv.Type().Elem().Kind() != reflect.Uint8 {
goto BadType goto BadType
...@@ -481,10 +477,6 @@ func unpackStructValue(val reflect.Value, msg []byte, off int) (off1 int, ok boo ...@@ -481,10 +477,6 @@ func unpackStructValue(val reflect.Value, msg []byte, off int) (off1 int, ok boo
return len(msg), false return len(msg), false
case reflect.Struct: case reflect.Struct:
off, ok = unpackStructValue(fv, msg, off) off, ok = unpackStructValue(fv, msg, off)
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
switch fv.Type().Kind() {
default:
goto BadType
case reflect.Uint16: case reflect.Uint16:
if off+2 > len(msg) { if off+2 > len(msg) {
return len(msg), false return len(msg), false
...@@ -499,7 +491,6 @@ func unpackStructValue(val reflect.Value, msg []byte, off int) (off1 int, ok boo ...@@ -499,7 +491,6 @@ func unpackStructValue(val reflect.Value, msg []byte, off int) (off1 int, ok boo
i := uint32(msg[off])<<24 | uint32(msg[off+1])<<16 | uint32(msg[off+2])<<8 | uint32(msg[off+3]) i := uint32(msg[off])<<24 | uint32(msg[off+1])<<16 | uint32(msg[off+2])<<8 | uint32(msg[off+3])
fv.SetUint(uint64(i)) fv.SetUint(uint64(i))
off += 4 off += 4
}
case reflect.Array: case reflect.Array:
if fv.Type().Elem().Kind() != reflect.Uint8 { if fv.Type().Elem().Kind() != reflect.Uint8 {
goto BadType goto BadType
......
...@@ -60,8 +60,6 @@ func Value(t reflect.Type, rand *rand.Rand) (value reflect.Value, ok bool) { ...@@ -60,8 +60,6 @@ func Value(t reflect.Type, rand *rand.Rand) (value reflect.Value, ok bool) {
switch concrete := t; concrete.Kind() { switch concrete := t; concrete.Kind() {
case reflect.Bool: case reflect.Bool:
return reflect.NewValue(rand.Int()&1 == 0), true return reflect.NewValue(rand.Int()&1 == 0), true
case reflect.Float32, reflect.Float64, reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr, reflect.Complex64, reflect.Complex128:
switch t.Kind() {
case reflect.Float32: case reflect.Float32:
return reflect.NewValue(randFloat32(rand)), true return reflect.NewValue(randFloat32(rand)), true
case reflect.Float64: case reflect.Float64:
...@@ -92,7 +90,6 @@ func Value(t reflect.Type, rand *rand.Rand) (value reflect.Value, ok bool) { ...@@ -92,7 +90,6 @@ func Value(t reflect.Type, rand *rand.Rand) (value reflect.Value, ok bool) {
return reflect.NewValue(uint(randInt64(rand))), true return reflect.NewValue(uint(randInt64(rand))), true
case reflect.Uintptr: case reflect.Uintptr:
return reflect.NewValue(uintptr(randInt64(rand))), true return reflect.NewValue(uintptr(randInt64(rand))), true
}
case reflect.Map: case reflect.Map:
numElems := rand.Intn(complexSize) numElems := rand.Intn(complexSize)
m := reflect.MakeMap(concrete) m := reflect.MakeMap(concrete)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment