github.com/protolambda/zssz@v0.1.5/types/ssz_uint64.go (about) 1 package types 2 3 import ( 4 "encoding/binary" 5 "fmt" 6 . "github.com/protolambda/zssz/dec" 7 . "github.com/protolambda/zssz/enc" 8 . "github.com/protolambda/zssz/htr" 9 . "github.com/protolambda/zssz/pretty" 10 "unsafe" 11 ) 12 13 type SSZUint64 struct{} 14 15 func (t SSZUint64) FuzzMinLen() uint64 { 16 return 8 17 } 18 19 func (t SSZUint64) FuzzMaxLen() uint64 { 20 return 8 21 } 22 23 func (t SSZUint64) MinLen() uint64 { 24 return 8 25 } 26 27 func (t SSZUint64) MaxLen() uint64 { 28 return 8 29 } 30 31 func (t SSZUint64) FixedLen() uint64 { 32 return 8 33 } 34 35 func (t SSZUint64) IsFixed() bool { 36 return true 37 } 38 39 func (t SSZUint64) SizeOf(p unsafe.Pointer) uint64 { 40 return 8 41 } 42 43 func (t SSZUint64) Encode(eb *EncodingWriter, p unsafe.Pointer) error { 44 binary.LittleEndian.PutUint64(eb.Scratch[0:8], *(*uint64)(p)) 45 return eb.Write(eb.Scratch[0:8]) 46 } 47 48 func (t SSZUint64) Decode(dr *DecodingReader, p unsafe.Pointer) error { 49 v, err := dr.ReadUint64() 50 if err != nil { 51 return err 52 } 53 *(*uint64)(p) = v 54 return nil 55 } 56 57 func (t SSZUint64) DryCheck(dr *DecodingReader) error { 58 _, err := dr.Skip(8) 59 return err 60 } 61 62 func (t SSZUint64) HashTreeRoot(h MerkleFn, p unsafe.Pointer) (out [32]byte) { 63 binary.LittleEndian.PutUint64(out[:], *(*uint64)(p)) 64 return 65 } 66 67 func (t SSZUint64) Pretty(indent uint32, w *PrettyWriter, p unsafe.Pointer) { 68 w.WriteIndent(indent) 69 if *(*uint64)(p) == ^uint64(0) { 70 w.Write("0xFFFFFFFFFFFFFFFF") 71 } else { 72 w.Write(fmt.Sprintf("%d", *(*uint64)(p))) 73 } 74 }