var s string;
var t reflect.Type;
+{
+ var ip *int32;
+ var i int32 = 1234;
+ vip := reflect.NewValue(&ip);
+ vi := reflect.NewValue(i);
+ vip.(reflect.PtrValue).Sub().(reflect.PtrValue).SetSub(vi);
+ if *ip != 1234 {
+ panicln("SetSub failure", *ip);
+ }
+}
+
// Types
typedump("missing", "$missing$");
typedump("int", "int");
export type Value interface {
Kind() int;
Type() Type;
+ Addr() Addr;
Interface() Empty;
}
return c.typ
}
+func (c *Common) Addr() Addr {
+ return c.addr
+}
+
func (c *Common) Interface() Empty {
return sys.unreflect(*AddrToPtrAddr(c.addr), c.typ.String());
}
Type() Type;
Sub() Value;
Get() Addr;
+ SetSub(Value);
}
type PtrValueStruct struct {
return NewValueAddr(v.typ.(PtrType).Sub(), v.Get());
}
+func (v *PtrValueStruct) SetSub(subv Value) {
+ *AddrToPtrAddr(v.addr) = subv.Addr();
+}
+
func PtrCreator(typ Type, addr Addr) Value {
return &PtrValueStruct{ Common{PtrKind, typ, addr} };
}