From 20b7162a6206e61a39d799a5adf84379c9c8c818 Mon Sep 17 00:00:00 2001 From: obscuren Date: Mon, 16 Mar 2015 13:23:06 +0100 Subject: [PATCH] Added functions to Hash & Address * Set, SetString, SetBytes * StringTo*, BytesTo* --- common/types.go | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/common/types.go b/common/types.go index 911be9b9b..e0963a7c5 100644 --- a/common/types.go +++ b/common/types.go @@ -5,6 +5,25 @@ type ( Address [20]byte ) +var ( + zeroHash Hash + zeroAddress Address +) + +func BytesToHash(b []byte) Hash { + var h Hash + h.SetBytes(b) + return h +} +func StringToHash(s string) Hash { return BytesToHash([]byte(s)) } + +func BytesToAddress(b []byte) Address { + var a Address + a.SetBytes(b) + return a +} +func StringToAddress(s string) Address { return BytesToAddress([]byte(s)) } + // Don't use the default 'String' method in case we want to overwrite // Get the string representation of the underlying hash @@ -24,8 +43,16 @@ func (h Hash) SetBytes(b []byte) { } } +// Set string `s` to h. If s is larger than len(h) it will panic func (h Hash) SetString(s string) { h.SetBytes([]byte(s)) } +// Sets h to other +func (h Hash) Set(other Hash) { + for i, v := range other { + h[i] = v + } +} + // Get the string representation of the underlying address func (a Address) Str() string { return string(a[:]) @@ -42,4 +69,13 @@ func (a Address) SetBytes(b []byte) { a[i] = b[i] } } -func (a Address) SetString(s string) { h.SetBytes([]byte(a)) } + +// Set string `s` to a. If s is larger than len(a) it will panic +func (a Address) SetString(s string) { a.SetBytes([]byte(s)) } + +// Sets a to other +func (a Address) Set(other Address) { + for i, v := range other { + a[i] = v + } +}