mirror of https://github.com/ethereum/go-ethereum
rlp: support for uint256 (#26898)
This adds built-in support in package rlp for encoding, decoding and generating code dealing with uint256.Int. --------- Co-authored-by: Felix Lange <fjl@twurst.com>pull/26917/head
parent
b7bfbc1e64
commit
58d0f6440b
@ -0,0 +1,10 @@ |
||||
// -*- mode: go -*- |
||||
|
||||
package test |
||||
|
||||
import "github.com/holiman/uint256" |
||||
|
||||
type Test struct { |
||||
Int *uint256.Int |
||||
IntNoPtr uint256.Int |
||||
} |
@ -0,0 +1,44 @@ |
||||
package test |
||||
|
||||
import "github.com/ethereum/go-ethereum/rlp" |
||||
import "github.com/holiman/uint256" |
||||
import "io" |
||||
|
||||
func (obj *Test) EncodeRLP(_w io.Writer) error { |
||||
w := rlp.NewEncoderBuffer(_w) |
||||
_tmp0 := w.List() |
||||
if obj.Int == nil { |
||||
w.Write(rlp.EmptyString) |
||||
} else { |
||||
w.WriteUint256(obj.Int) |
||||
} |
||||
w.WriteUint256(&obj.IntNoPtr) |
||||
w.ListEnd(_tmp0) |
||||
return w.Flush() |
||||
} |
||||
|
||||
func (obj *Test) DecodeRLP(dec *rlp.Stream) error { |
||||
var _tmp0 Test |
||||
{ |
||||
if _, err := dec.List(); err != nil { |
||||
return err |
||||
} |
||||
// Int: |
||||
var _tmp1 uint256.Int |
||||
if err := dec.ReadUint256(&_tmp1); err != nil { |
||||
return err |
||||
} |
||||
_tmp0.Int = &_tmp1 |
||||
// IntNoPtr: |
||||
var _tmp2 uint256.Int |
||||
if err := dec.ReadUint256(&_tmp2); err != nil { |
||||
return err |
||||
} |
||||
_tmp0.IntNoPtr = _tmp2 |
||||
if err := dec.ListEnd(); err != nil { |
||||
return err |
||||
} |
||||
} |
||||
*obj = _tmp0 |
||||
return nil |
||||
} |
Loading…
Reference in new issue