github.com/protolambda/zssz@v0.1.5/types/ssz_uint32.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 SSZUint32 struct{}
    14  
    15  func (t SSZUint32) FuzzMinLen() uint64 {
    16  	return 4
    17  }
    18  
    19  func (t SSZUint32) FuzzMaxLen() uint64 {
    20  	return 4
    21  }
    22  
    23  func (t SSZUint32) MinLen() uint64 {
    24  	return 4
    25  }
    26  
    27  func (t SSZUint32) MaxLen() uint64 {
    28  	return 4
    29  }
    30  
    31  func (t SSZUint32) FixedLen() uint64 {
    32  	return 4
    33  }
    34  
    35  func (t SSZUint32) IsFixed() bool {
    36  	return true
    37  }
    38  
    39  func (t SSZUint32) SizeOf(p unsafe.Pointer) uint64 {
    40  	return 4
    41  }
    42  
    43  func (t SSZUint32) Encode(eb *EncodingWriter, p unsafe.Pointer) error {
    44  	binary.LittleEndian.PutUint32(eb.Scratch[0:4], *(*uint32)(p))
    45  	return eb.Write(eb.Scratch[0:4])
    46  }
    47  
    48  func (t SSZUint32) Decode(dr *DecodingReader, p unsafe.Pointer) error {
    49  	v, err := dr.ReadUint32()
    50  	if err != nil {
    51  		return err
    52  	}
    53  	*(*uint32)(p) = v
    54  	return nil
    55  }
    56  
    57  func (t SSZUint32) DryCheck(dr *DecodingReader) error {
    58  	_, err := dr.Skip(4)
    59  	return err
    60  }
    61  
    62  func (t SSZUint32) HashTreeRoot(h MerkleFn, p unsafe.Pointer) (out [32]byte) {
    63  	binary.LittleEndian.PutUint32(out[:], *(*uint32)(p))
    64  	return
    65  }
    66  
    67  func (t SSZUint32) Pretty(indent uint32, w *PrettyWriter, p unsafe.Pointer) {
    68  	w.WriteIndent(indent)
    69  	if *(*uint32)(p) == ^uint32(0) {
    70  		w.Write("0xFFFFFFFF")
    71  	} else {
    72  		w.Write(fmt.Sprintf("%d", *(*uint32)(p)))
    73  	}
    74  }