aboutsummaryrefslogtreecommitdiffstats
path: root/ethutil
diff options
context:
space:
mode:
Diffstat (limited to 'ethutil')
-rw-r--r--ethutil/rlp.go6
-rw-r--r--ethutil/value.go4
2 files changed, 10 insertions, 0 deletions
diff --git a/ethutil/rlp.go b/ethutil/rlp.go
index 55406133b..1fff2b28a 100644
--- a/ethutil/rlp.go
+++ b/ethutil/rlp.go
@@ -15,6 +15,10 @@ type RlpEncodeDecode interface {
RlpValue() []interface{}
}
+type RlpEncodable interface {
+ RlpData() interface{}
+}
+
func Rlp(encoder RlpEncode) []byte {
return encoder.RlpEncode()
}
@@ -100,6 +104,8 @@ func Encode(object interface{}) []byte {
switch t := object.(type) {
case *Value:
buff.Write(Encode(t.Raw()))
+ case RlpEncodable:
+ buff.Write(Encode(t.RlpData()))
// Code dup :-/
case int:
buff.Write(Encode(big.NewInt(int64(t))))
diff --git a/ethutil/value.go b/ethutil/value.go
index dd777fa43..6417b0008 100644
--- a/ethutil/value.go
+++ b/ethutil/value.go
@@ -377,6 +377,10 @@ func (val *Value) NewIterator() *ValueIterator {
return &ValueIterator{value: val}
}
+func (it *ValueIterator) Len() int {
+ return it.value.Len()
+}
+
func (it *ValueIterator) Next() bool {
if it.idx >= it.value.Len() {
return false