aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-02-21 06:10:05 +0800
committerobscuren <geffobscura@gmail.com>2014-02-21 06:10:05 +0800
commit059ad352156b995aab9132aff9569c2e03c32b9b (patch)
tree8ac1275608075cadbfc02a1a35273c043ea2ee18
parent9bc5c4a0c5116cf3b49a55fc2aceb5f5c3b3e34d (diff)
downloadgo-tangerine-059ad352156b995aab9132aff9569c2e03c32b9b.tar
go-tangerine-059ad352156b995aab9132aff9569c2e03c32b9b.tar.gz
go-tangerine-059ad352156b995aab9132aff9569c2e03c32b9b.tar.bz2
go-tangerine-059ad352156b995aab9132aff9569c2e03c32b9b.tar.lz
go-tangerine-059ad352156b995aab9132aff9569c2e03c32b9b.tar.xz
go-tangerine-059ad352156b995aab9132aff9569c2e03c32b9b.tar.zst
go-tangerine-059ad352156b995aab9132aff9569c2e03c32b9b.zip
Type checking
-rw-r--r--ethutil/value.go16
1 files changed, 15 insertions, 1 deletions
diff --git a/ethutil/value.go b/ethutil/value.go
index d3a38f87f..03d23d559 100644
--- a/ethutil/value.go
+++ b/ethutil/value.go
@@ -36,7 +36,8 @@ func (val *Value) Len() int {
if data, ok := val.Val.([]interface{}); ok {
return len(data)
} else if data, ok := val.Val.([]byte); ok {
- // FIXME
+ return len(data)
+ } else if data, ok := val.Val.(string); ok {
return len(data)
}
@@ -139,6 +140,19 @@ func (val *Value) SliceFromTo(from, to int) *Value {
return NewValue(slice[from:to])
}
+// TODO More type checking methods
+func (val *Value) IsSlice() bool {
+ return val.Type() == reflect.Slice
+}
+
+func (val *Value) IsStr() bool {
+ return val.Type() == reflect.String
+}
+
+func (val *Value) IsEmpty() bool {
+ return (val.IsSlice() || val.IsStr()) && val.Len() == 0
+}
+
// Threat the value as a slice
func (val *Value) Get(idx int) *Value {
if d, ok := val.Val.([]interface{}); ok {