update reflection library to int/int32 etc. split

fmt still to come

R=rsc
DELTA=168  (141 added, 19 deleted, 8 changed)
OCL=18064
CL=18071
diff --git a/src/lib/reflect/value.go b/src/lib/reflect/value.go
index 890fd9b..c39b1cb3 100644
--- a/src/lib/reflect/value.go
+++ b/src/lib/reflect/value.go
@@ -41,21 +41,49 @@
 
 // Conversion functions, implemented in assembler
 func AddrToPtrAddr(Addr) *Addr
+func AddrToPtrInt(Addr) *int
 func AddrToPtrInt8(Addr) *int8
 func AddrToPtrInt16(Addr) *int16
 func AddrToPtrInt32(Addr) *int32
 func AddrToPtrInt64(Addr) *int64
+func AddrToPtrUint(Addr) *uint
 func AddrToPtrUint8(Addr) *uint8
 func PtrUint8ToAddr(*uint8) Addr
 func AddrToPtrUint16(Addr) *uint16
 func AddrToPtrUint32(Addr) *uint32
 func AddrToPtrUint64(Addr) *uint64
 func PtrUint64ToAddr(*uint64) Addr
+func AddrToPtrFloat(Addr) *float
 func AddrToPtrFloat32(Addr) *float32
 func AddrToPtrFloat64(Addr) *float64
 func AddrToPtrFloat80(Addr) *float80
 func AddrToPtrString(Addr) *string
 
+// -- Int
+
+export type IntValue interface {
+	Kind()	int;
+	Get()	int;
+	Put(int);
+	Type()	Type;
+}
+
+type IntValueStruct struct {
+	CommonV
+}
+
+func IntCreator(typ Type, addr Addr) Value {
+	return &IntValueStruct{ CommonV{IntKind, typ, addr} }
+}
+
+func (v *IntValueStruct) Get() int {
+	return *AddrToPtrInt(v.addr)
+}
+
+func (v *IntValueStruct) Put(i int) {
+	*AddrToPtrInt(v.addr) = i
+}
+
 // -- Int8
 
 export type Int8Value interface {
@@ -156,6 +184,31 @@
 	*AddrToPtrInt64(v.addr) = i
 }
 
+// -- Uint
+
+export type UintValue interface {
+	Kind()	int;
+	Get()	uint;
+	Put(uint);
+	Type()	Type;
+}
+
+type UintValueStruct struct {
+	CommonV
+}
+
+func UintCreator(typ Type, addr Addr) Value {
+	return &UintValueStruct{ CommonV{UintKind, typ, addr} }
+}
+
+func (v *UintValueStruct) Get() uint {
+	return *AddrToPtrUint(v.addr)
+}
+
+func (v *UintValueStruct) Put(i uint) {
+	*AddrToPtrUint(v.addr) = i
+}
+
 // -- Uint8
 
 export type Uint8Value interface {
@@ -256,6 +309,31 @@
 	*AddrToPtrUint64(v.addr) = i
 }
 
+// -- Float
+
+export type FloatValue interface {
+	Kind()	int;
+	Get()	float;
+	Put(float);
+	Type()	Type;
+}
+
+type FloatValueStruct struct {
+	CommonV
+}
+
+func FloatCreator(typ Type, addr Addr) Value {
+	return &FloatValueStruct{ CommonV{FloatKind, typ, addr} }
+}
+
+func (v *FloatValueStruct) Get() float {
+	return *AddrToPtrFloat(v.addr)
+}
+
+func (v *FloatValueStruct) Put(f float) {
+	*AddrToPtrFloat(v.addr) = f
+}
+
 // -- Float32
 
 export type Float32Value interface {
@@ -572,14 +650,17 @@
 
 func init() {
 	creator = new(map[int] Creator);
+	creator[IntKind] = &IntCreator;
 	creator[Int8Kind] = &Int8Creator;
 	creator[Int16Kind] = &Int16Creator;
 	creator[Int32Kind] = &Int32Creator;
 	creator[Int64Kind] = &Int64Creator;
+	creator[UintKind] = &UintCreator;
 	creator[Uint8Kind] = &Uint8Creator;
 	creator[Uint16Kind] = &Uint16Creator;
 	creator[Uint32Kind] = &Uint32Creator;
 	creator[Uint64Kind] = &Uint64Creator;
+	creator[FloatKind] = &FloatCreator;
 	creator[Float32Kind] = &Float32Creator;
 	creator[Float64Kind] = &Float64Creator;
 	creator[Float80Kind] = &Float80Creator;