Add support for the basic type "bool".
R=r
DELTA=51 (51 added, 0 deleted, 0 changed)
OCL=18283
CL=18290
diff --git a/src/lib/reflect/value.go b/src/lib/reflect/value.go
index 9f3e4ab..554da2d 100644
--- a/src/lib/reflect/value.go
+++ b/src/lib/reflect/value.go
@@ -58,6 +58,7 @@
func AddrToPtrFloat64(Addr) *float64
func AddrToPtrFloat80(Addr) *float80
func AddrToPtrString(Addr) *string
+func AddrToPtrBool(Addr) *bool
// -- Int
@@ -438,6 +439,31 @@
*AddrToPtrString(v.addr) = s
}
+// -- Bool
+
+export type BoolValue interface {
+ Kind() int;
+ Get() bool;
+ Put(bool);
+ Type() Type;
+}
+
+type BoolValueStruct struct {
+ CommonV
+}
+
+func BoolCreator(typ Type, addr Addr) Value {
+ return &BoolValueStruct{ CommonV{BoolKind, typ, addr} }
+}
+
+func (v *BoolValueStruct) Get() bool {
+ return *AddrToPtrBool(v.addr)
+}
+
+func (v *BoolValueStruct) Put(b bool) {
+ *AddrToPtrBool(v.addr) = b
+}
+
// -- Pointer
export type PtrValue interface {
@@ -665,6 +691,7 @@
creator[Float64Kind] = &Float64Creator;
creator[Float80Kind] = &Float80Creator;
creator[StringKind] = &StringCreator;
+ creator[BoolKind] = &BoolCreator;
creator[PtrKind] = &PtrCreator;
creator[ArrayKind] = &ArrayCreator;
creator[MapKind] = &MapCreator;