aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorFelix Lange <fjl@twurst.com>2017-02-23 00:59:59 +0800
committerFelix Lange <fjl@twurst.com>2017-03-02 21:05:46 +0800
commitd304da380382245190f33878363696cd151201a9 (patch)
treeae1791944e79a9ea741fb447a6346309e4b016c7 /core
parent357d00cdb1625e4a715e0b3928ef7bd3656a8d95 (diff)
downloaddexon-d304da380382245190f33878363696cd151201a9.tar.gz
dexon-d304da380382245190f33878363696cd151201a9.tar.zst
dexon-d304da380382245190f33878363696cd151201a9.zip
common/hexutil: implement TextMarshaler, TextUnmarshaler
This commit makes the wrapper types more generally applicable. encoding.TextMarshaler is supported by most codec implementations (e.g. for yaml). The tests now ensure that package json actually recognizes the custom marshaler implementation irrespective of how it is implemented. The Uint type has new tests, too. These are tricky because uint size depends on the CPU word size. Turns out that there was one incorrect case where decoding returned ErrUint64Range instead of ErrUintRange.
Diffstat (limited to 'core')
-rw-r--r--core/types/block.go12
-rw-r--r--core/types/bloom9.go12
2 files changed, 12 insertions, 12 deletions
diff --git a/core/types/block.go b/core/types/block.go
index 1a2a1f2bd..1dae87962 100644
--- a/core/types/block.go
+++ b/core/types/block.go
@@ -62,14 +62,14 @@ func (n BlockNonce) Uint64() uint64 {
return binary.BigEndian.Uint64(n[:])
}
-// MarshalJSON implements json.Marshaler
-func (n BlockNonce) MarshalJSON() ([]byte, error) {
- return hexutil.Bytes(n[:]).MarshalJSON()
+// MarshalText encodes n as a hex string with 0x prefix.
+func (n BlockNonce) MarshalText() ([]byte, error) {
+ return hexutil.Bytes(n[:]).MarshalText()
}
-// UnmarshalJSON implements json.Unmarshaler
-func (n *BlockNonce) UnmarshalJSON(input []byte) error {
- return hexutil.UnmarshalJSON("BlockNonce", input, n[:])
+// UnmarshalText implements encoding.TextUnmarshaler.
+func (n *BlockNonce) UnmarshalText(input []byte) error {
+ return hexutil.UnmarshalFixedText("BlockNonce", input, n[:])
}
// Header represents a block header in the Ethereum blockchain.
diff --git a/core/types/bloom9.go b/core/types/bloom9.go
index 2a37b5977..60aacc301 100644
--- a/core/types/bloom9.go
+++ b/core/types/bloom9.go
@@ -75,14 +75,14 @@ func (b Bloom) TestBytes(test []byte) bool {
}
-// MarshalJSON encodes b as a hex string with 0x prefix.
-func (b Bloom) MarshalJSON() ([]byte, error) {
- return hexutil.Bytes(b[:]).MarshalJSON()
+// MarshalText encodes b as a hex string with 0x prefix.
+func (b Bloom) MarshalText() ([]byte, error) {
+ return hexutil.Bytes(b[:]).MarshalText()
}
-// UnmarshalJSON b as a hex string with 0x prefix.
-func (b *Bloom) UnmarshalJSON(input []byte) error {
- return hexutil.UnmarshalJSON("Bloom", input, b[:])
+// UnmarshalText b as a hex string with 0x prefix.
+func (b *Bloom) UnmarshalText(input []byte) error {
+ return hexutil.UnmarshalFixedText("Bloom", input, b[:])
}
func CreateBloom(receipts Receipts) Bloom {