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