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  }