aboutsummaryrefslogtreecommitdiffstats
path: root/rlp/decode.go
diff options
context:
space:
mode:
authorJeffrey Wilcke <jeffrey@ethereum.org>2015-09-11 03:02:16 +0800
committerJeffrey Wilcke <jeffrey@ethereum.org>2015-09-11 03:02:16 +0800
commit62bbf8a09e7304611f57fb7eea92911cf52e6229 (patch)
tree28df8021441aedf31fa76646e81b024e0cf9d099 /rlp/decode.go
parent90f1fe0ed2399f90f01c09e61e244121ef7d148a (diff)
parentfc8b246109760714a838f4be163cca1dbb998163 (diff)
downloadgo-tangerine-62bbf8a09e7304611f57fb7eea92911cf52e6229.tar
go-tangerine-62bbf8a09e7304611f57fb7eea92911cf52e6229.tar.gz
go-tangerine-62bbf8a09e7304611f57fb7eea92911cf52e6229.tar.bz2
go-tangerine-62bbf8a09e7304611f57fb7eea92911cf52e6229.tar.lz
go-tangerine-62bbf8a09e7304611f57fb7eea92911cf52e6229.tar.xz
go-tangerine-62bbf8a09e7304611f57fb7eea92911cf52e6229.tar.zst
go-tangerine-62bbf8a09e7304611f57fb7eea92911cf52e6229.zip
Merge pull request #1778 from fjl/rlp-trie-changes
rlp: precursor changes for trie, p2p
Diffstat (limited to 'rlp/decode.go')
-rw-r--r--rlp/decode.go11
1 files changed, 11 insertions, 0 deletions
diff --git a/rlp/decode.go b/rlp/decode.go
index 1381f5274..c4d42c6fc 100644
--- a/rlp/decode.go
+++ b/rlp/decode.go
@@ -173,6 +173,8 @@ var (
func makeDecoder(typ reflect.Type, tags tags) (dec decoder, err error) {
kind := typ.Kind()
switch {
+ case typ == rawValueType:
+ return decodeRawValue, nil
case typ.Implements(decoderInterface):
return decodeDecoder, nil
case kind != reflect.Ptr && reflect.PtrTo(typ).Implements(decoderInterface):
@@ -203,6 +205,15 @@ func makeDecoder(typ reflect.Type, tags tags) (dec decoder, err error) {
}
}
+func decodeRawValue(s *Stream, val reflect.Value) error {
+ r, err := s.Raw()
+ if err != nil {
+ return err
+ }
+ val.SetBytes(r)
+ return nil
+}
+
func decodeUint(s *Stream, val reflect.Value) error {
typ := val.Type()
num, err := s.uint(typ.Bits())